availableProcessors() returns 1 for dualcore phones

怎甘沉沦 提交于 2019-12-06 19:25:19

问题


I recently bought a Moto Atrix 2 mobile. When I tried to look at the processor specs in the phone, Runtime.getRuntime().availableProcessors() returned 1. /proc/cpuinfo too had information about just processor 0.

Out of curiosity I checked the same in my friend's Samsung Galaxy S2, which is again a dual core phone. This too showed that no. of cores is 1.

I checked the same in my Moto xoom tablet which is again dual core. This time availableProcessors() returned 2 and cpuinfo also had both processor 0 and processor 1 details.

I am confused. Why some devices carry different information? Can someone explain this anomaly?


回答1:


Runtime.getRuntime().availableProcessors() only returns the number of online processors, so it will return 1 when the second core is sleeping. This is done in order to preserve power during less resource-intensive tasks.

To see all available cores, look at /sys/devices/system/cpu/




回答2:


This will get you the number of cores on Android (based on this post) :

public static int getCoresCount()
    {
    class CpuFilter implements FileFilter
      {
      @Override
      public boolean accept(final File pathname)
        {
        if(Pattern.matches("cpu[0-9]+",pathname.getName()))
          return true;
        return false;
        }
      }
    try
      {
      final File dir=new File("/sys/devices/system/cpu/");
      final File[] files=dir.listFiles(new CpuFilter());
      return files.length;
      }
    catch(final Exception e)
      {
      return Math.max(1,Runtime.getRuntime().availableProcessors());
      }
    }


来源:https://stackoverflow.com/questions/10133570/availableprocessors-returns-1-for-dualcore-phones

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!