是否有类似于Intel TBB的支持并行处理的Java库。
是否有类似于Intel TBB的支持并行处理的Java库。
ExecutorService es = Executors.newFixedThreadPool(
Runtime.getRuntime().availableProcessors);
// to add a number of tasks
for(int i=0; i<numberOfTasks; i++) {
es.submit(new Callable<ResultType>() {
public ResultType call() {
return doWork(i);
}
}
}
Java Concurrency in Practice
这个功能在Java5之后的java.util.concurrent
包中提供。
Java5版进行了主要的Java内存模型大修,以巩固并发编程基础和解决已知问题。在Java中,并发性从一开始就被设计到语言中,而不是仅仅添加到库中。
请查看 java.util.concurrent
包。它有许多对于并行编程非常有用的类。
顺便说一下,您应该考虑接受一些答案。15个问题没有被接受的答案会让人们不愿意回答您的问题。
有些人问关于并发和并行的区别。并发意味着不同的程序模拟同时运行,调度程序决定哪个程序正在运行。并行意味着将一个程序分成任务,并在不同的核心上同时运行这些任务以解决问题。当这些任务与其他程序竞争资源时(我们有更多的任务比可用的核心),那么我们就同时具有并发性和并行性。避免竞态条件是并行性中较不困难的部分,大问题是找到一种良好的方法来适当地分解任务以获得良好的结果。非常细粒度的分解有缺点(开销),但粗粒度的并行性(单任务)也有缺点(您没有使用计算机上所有可用的处理能力)。您必须找到中期,这意味着要做一些优化问题(数学)。