多线程并发
文章平均质量分 90
CmdSmith
这个作者很懒,什么都没留下…
展开
-
Java并发编程:死锁(哲学家就餐)
死锁 某个任务在等待另一个任务,而后者又等待别的任务,这样一直下去,直到这个链条上的任务又在等待第一个任务释放锁。这得到了一个“任务之间互相等待的连续循环”,没有哪个线程能继续。这被称之为死锁。 如果你运行一个程序,而他马上就死锁了,你可以立即跟踪下去。真正的问题在于,程序可能看起来工作良好,但是具有潜在的死锁危险。这时,死锁可能发生,而事先却没有任何征兆,所以缺陷会潜伏原创 2017-11-17 21:56:45 · 1065 阅读 · 0 评论 -
免锁容器之CopyOnWriteArrayList、ConcurrentHashMap
像Vector 和 Hashtable 这类早期容器具有许多synchronized方法,当他们用于非多线程的应用程序时,便会导致不可接受的开销。在Java1.2中,新的容器类库是不同步的,并且Collections类提供了各种static同步的装饰方法,从而来同步不同类型的容器。尽管这是一种改进,因为它使你可以选择在你的容器中是否要使用同步,但是这种开销依旧是基于synchronized...原创 2017-11-26 14:36:01 · 992 阅读 · 0 评论 -
分支/合并框架
分支/合并框架的目的是***以递归方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体结果***。他是ExecutorService接口的一个实现,它把子任务分配给线程池(称为ForkJoinPool)中的工作线程。使用 RecursiveTask要把任务提交到这个池,必须创建RecursiveTask的一个子类,其中R是并行化任务(以及所有子任务)产生的结果类型,或者...原创 2018-12-07 14:35:10 · 452 阅读 · 0 评论