我刚读完这篇文章:Java-5 ThreadPoolExecutor相对于Java-7 ForkJoinPool有什么优势?觉得答案不够直接.
您能用简单的语言和示例来解释,Java 7的Fork-Join框架与旧解决方案之间的权衡取舍是什么?
我还阅读了Google关于Java提示的#1热门提示:何时从javaworld.com 使用ForkJoinPool vs ExecutorService但文章没有回答标题问题时,它主要讨论api差异......
我的问题是:使用它是否有意义Executors.newFixedThreadPool(1)??.在两个线程(main + oneAnotherThread)场景中,使用执行程序服务是否有效?是否通过调用new Runnable(){ }比使用ExecutorService更好地直接创建新线程?在这种情况下使用ExecutorService有什么好处和缺点?
PS:主线程和oneAnotherThread不访问任何公共资源.
我经历过:使用ExecutorService有什么好处?.并且一次只有一个线程!
使用的优点是什么
Executors.newSingleThreadExecutor().submit(job);
Run Code Online (Sandbox Code Playgroud)
比
job.run();
Run Code Online (Sandbox Code Playgroud)
哪个job是Runnable类的实例.
我们在java中有三种不同的多线程技术 - Fork/Join池,Executor Service和CountDownLatch
Fork/Join pool(http://www.javacodegeeks.com/2011/02/java-forkjoin-parallel-programming.html)
Fork/Join框架旨在使分而治之的算法易于并行化.这种类型的算法非常适合于可以分为两个或更多相同类型的子问题的问题.他们使用递归将问题分解为简单的任务,直到这些变得足够简单直接解决.然后组合子问题的解决方案以给出原始问题的解决方案
ExecutorService是一个扩展Executor类并表示异步执行的接口.它为我们提供了管理结束和检测异步任务进度的机制.
invokeAll():执行给定的任务,返回一个Futures列表,其中包含完成后的状态和结果.对于返回列表的每个元素,Future.isDone()都为true.
CountDownLatch :( http://examples.javacodegeeks.com/core-java/util/concurrent/countdownlatch-concurrent/java-util-concurrent-countdownlatch-example/)
CountDownLatch用于同步,以允许一个或多个线程等待,直到在其他线程中执行的一组操作完成.
我的假设:
在这两种替代方案中,只有在完成所有任务/线程后才能知道最终结果.
这三种选择是互补的还是互补的?
java multithreading executorservice countdownlatch forkjoinpool