Do you really需要手动操作线程和迭代器?你可以使用Java 8Stream
并让parallel()
做这份工作。
默认情况下,当您拥有处理器时,它将少使用一个线程。
例子 :
list.stream()
.parallel()
.forEach(this::doSomething)
;
//For example, display the current integer and the current thread number.
public void doSomething(Integer i) {
System.out.println(String.format("%d, %d", i, Thread.currentThread().getId()));
}
结果 :
49748, 13
49749, 13
49750, 13
192710, 14
105734, 17
105735, 17
105736, 17
[...]
编辑:如果你使用maven,你将需要添加这段配置pom.xml
为了使用Java 8:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>