availableProcessors()为双核手机返回1(availableProcessors(

2019-07-28 22:28发布

我最近买了摩托的Atrix 2手机。 当我想看看在手机处理器规格,调用Runtime.getRuntime()。availableProcessors()返回1的/ proc / cpuinfo中也有大约只是处理器0的信息。

出于好奇,我检查了同在我朋友的三星Galaxy S2,这又是一个双核手机。 这也表明,没有。 芯的是1。

我查了同样的在我的摩托XOOM平板电脑这又是双核。 此时availableProcessors()返回2和cpuinfo中也有两个处理器0和处理器1的细节。

我很迷惑。 为什么一些设备进行不同的信息? 有人可以解释这种异常现象?

Answer 1:

Runtime.getRuntime().availableProcessors()只返回联机处理器的数量,所以它会返回1时,第二个核心正在睡觉。 这样做是为了在较少的资源密集型任务,以节省电力完成。

要查看所有可用的内核,看看/ SYS /设备/系统/ CPU /



Answer 2:

这将让你的核心在Android(基于数量这篇文章 ):

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());
      }
    }


文章来源: availableProcessors() returns 1 for dualcore phones