并发编程
文章平均质量分 83
多线程
不做挖坑人
一事无成到事事都成,戒矫戒躁,厚积薄发。不愿做菜鸟,那只能笨鸟先飞。
展开
-
并发工具类之CountDownLatch
一、概念闭锁或叫发令枪,CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。CountDownLatch 是通过一个计数器来实现的,计数器的初始值为初始任务的数量。每当完成了一个任务后,计数器的值就会减1(CountDownLatch.countDown()方法)。当计数器值到达 0 时,它表示所有的已经完成了任务,然后在闭锁上等待 CountDownL...原创 2021-07-15 23:48:15 · 176 阅读 · 0 评论 -
并发工具类之Fork-Join
一、分而治之思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。策略:对于一个规模为 n 的问题,若该问题可以容易地解决(比如说规模 n 较小)则直接解决,否则将其分解为 k 个规模较小的子问题,这些子问题互相独立且与原问题形式相同(子问题相互之间有联系就会变为动态规划算法),递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。举例:归并排序(降序图示)该算法是采用分治法的...原创 2021-07-15 16:42:01 · 320 阅读 · 0 评论 -
线程池详细解析
程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互。而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池。线程池里每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用。线程池是一种多线程处理形式,处理过程中将任务添加队列,然后在创建线程后自动启动这些任务,每个线程都使用默认的堆栈大小,以默认的优...原创 2019-10-14 13:18:59 · 139 阅读 · 0 评论