例如拥有一个8核设备,并做一个像这样的巨大任务:
int sum=1;
for (int i=0; i<99999999; i++){
sum=(int)(sum+sum);
}
此任务将使用设备的8个核心执行?还是只有一个?我想知道你是否应该为每个核心手动创建8个任务的8个线程,或者你可以在一个线程中执行你的大任务,因为操作系统将能够同时使用你的任务中的8个核心。 / p>
谢谢。
答案 0 :(得分:0)
您的示例将仅由单核执行。
如果要使用多个内核,则应将程序分配到不同的线程上。
如果要更好地与线程并行执行,则应使用Executors
并且不要设置池限制或将其设置为相等的核心。
有时内核并不相同,有些内核仅供操作系统使用,因此您最好知道可以使用多少内容。您可以看到有多少内核可供使用:
int n = Runtime.getRuntime().availableProcessors();