Java多线程循环相关的代码介绍

Java多线程循环需要我们不断的学习,有很多的问题一直是我们相互关心的。下面我们就来看看如何才能更好的使用这门编程语言。当每个迭代彼此独立,并且完成循环体中每个迭代的工作,意义都足够重大,足以弥补管理一个新任务的开销时,这个顺序循环是适合并行化的。

成都创新互联公司专注于临武网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供临武营销型网站建设,临武网站制作、临武网页设计、临武网站官网定制、成都微信小程序服务,打造临武网络公司原创品牌,更为您提供临武网站排名全网营销落地服务。

 
 
 
  1. public voidParallelRecursive(final Executorexec,
    List>nodes,Collection results){  
  2. for(Node n:nodes){  
  3. exec.execute(new Runnable(){  
  4. public void run(){  
  5. results.add(n.compute());  
  6. }  
  7. });  
  8. parallelRecursive(exec,n.getChildren(),results);  
  9. }  
  10. }  
  11. publicCollectiongetParallelResults(List>nodes)  
  12. throws InterruptedException{  
  13. ExecutorService exec=Executors.newCachedThreadPool();  
  14. Queue resultQueue=newConcurrentLinkedQueue();  
  15. parallelRecursive(exec,nodes,resultQueue);  
  16. exec.shutdown();  
  17. exec.awaitTermination(Long.MAX_VALUE,TimeUnit.SECONDS);  
  18. return reslutQueue;  

但是以上程序不能处理不存在任何方案的情况,而下列程序可以解决这个问题

 
 
 
  1. public class PuzzleSolverextendsConcurrent
    PuzzleSolver{  
  2. ...  
  3. privatefinal AtomicInteger taskCount=new AtomicInteger(0);  
  4. protectedRunnable newTask(P p,M m,Noden){  
  5. return new CountingSolverTask(p,m,n);  
  6. }  
  7. classCountingSolverTask extends SolverTask{  
  8. CountingSolverTask(P pos,Mmove,Node prev){  
  9. super(pos,move,prev);  
  10. taskCount.incrementAndGet();  
  11. }  
  12. publicvoid run(){  
  13. try{  
  14. super.run();  
  15. }  
  16. finally{  
  17. if (taskCount.decrementAndGet()==0)  
  18. solution.setValue(null);  
  19. }  
  20. }  
  21. }  

以上就是对Java多线程循环的相关介绍。希望大家有所收获。

网站名称:Java多线程循环相关的代码介绍
当前地址:http://www.hantingmc.com/qtweb/news11/250261.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联