欢迎来到天天文库
浏览记录
ID:59120362
大小:11.13 KB
页数:4页
时间:2020-09-15
《Java多线程方案处理关键代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java多线程方案处理关键代码 Java多线程方案在不断的完善中已经找到了自己的各种缺点,下面我们就来看看如何才能更好的学习相关问题。希望大家在不断的学习中有所收获,自由在不断的学习中才能更好的进行掌握Java多线程方案。 1、当每个迭代彼此独立,并且完成循环体中每个迭代的工作,意义都足够重大,足以弥补管理一个新任务的开销时,这个顺序循环是适合并行化的。 2、Java多线程方案关键代码如下: publicvoidParallelRecursive(finalExecutorexec,List>nodes,Collection
2、results){ for(Noden:nodes){ exec.execute(newRunnable(){ publicvoidrun(){ results.add(n.compute()); } }); parallelRecursive(exec,n.getChildren(),results); } } publicCollectiongetParallelResults(List>nodes) throwsInterruptedException{ ExecutorServiceexec=E
3、xecutors.newCachedThreadPool(); QueueresultQueue=newConcurrentLinkedQueue(); parallelRecursive(exec,nodes,resultQueue); exec.shutdown(); exec.awaitTermination(Long.MAX_VALUE,TimeUnit.SECONDS); returnreslutQueue; } 但是以上程序不能处理不存在任何方案的情况,而下列程序可以解决这个问题 publicclassPuzzleSol
4、ver
extendsConcurrentPuzzleSolver
{ ... privatefinalAtomicIntegertaskCount=newAtomicInteger(0); protectedRunnablenewTask(Pp,Mm,Node
n){ returnnewCountingSolverTask(p,m,n); } classCountingSolverTaskextendsSolverTask{ CountingSolverTask(Ppos,Mmove,Node
prev){ s
5、uper(pos,move,prev); taskCount.incrementAndGet(); } publicvoidrun(){ try{ super.run(); } finally{ if(taskCount.decrementAndGet()==0) solution.setValue(null); } } } }(ps:本文章来源于北大青鸟广安门校区官网)
此文档下载收益归作者所有