2020年8月20日

摘要: 1、概念 Exchanger(交换者)是一个用于线程间协作的工具类。 Exchanger 用于进行线程的数据交换。 Exchanger 提供一个同步点,在这个同步点,两个线程 可以交换 彼此的数据 只能是2个线程,他不支持更多的线程之间互换数据 当线程A调用Exchange对象的exchange() 阅读全文
posted @ 2020-08-20 10:12 shumeigang 阅读(147) 评论(0) 推荐(0)

2020年8月19日

摘要: 概念 Semaphore是java并发包里面的一个工具类,我们限制可以访问某些资源的线程数目就可以使用Semaphore了 Semaphore:可理解为允许线程执行信号的池子,池子中放入多少个信号就允许多少线程同时执行。 Semaphore的作用:限制线程并发的数量 注意:的是 Semaphore 阅读全文
posted @ 2020-08-19 16:36 shumeigang 阅读(199) 评论(0) 推荐(0)
摘要: 1、概念 CyclicBarrier可循环使用的屏障,让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时屏障才会开门 ,所有被屏障拦截的线程才会继续运行。 CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。 2.常用的方法: CyclicBarrier(in 阅读全文
posted @ 2020-08-19 15:00 shumeigang 阅读(145) 评论(0) 推荐(0)
摘要: 1、概念 CountDownLatch:具有计数器的功能,等待其他线程执行完毕,主线程在继续执行,用于监听某些初始化操作,并且线程进行阻塞,等初始化执行完毕后,通知主线程继续工作执行 CountDownLatch计数的次数一定要与构造器传入的数字一致,比如构造器传入的是3,则countDown()一 阅读全文
posted @ 2020-08-19 10:53 shumeigang 阅读(74) 评论(0) 推荐(0)
摘要: 背景 Java从JDK1.5开始提供了java.util.concurrent.atomic包,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全地更新一个变量的方式。在Java并发比编程中,要想保证一些操作不被其他线程干扰,就需要保证原子性 1、原子更新基本类型类: AtomicBoole 阅读全文
posted @ 2020-08-19 09:38 shumeigang 阅读(185) 评论(0) 推荐(0)
摘要: Fork/Join框架介绍 Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务 结 果 后得到大任务结果的框架。Fork/Join框架要完成两件事情: 1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务, 阅读全文
posted @ 2020-08-19 09:37 shumeigang 阅读(140) 评论(0) 推荐(0)
摘要: 一.什么是阻塞队列? 阻塞队列是一个在队列基础上又支持了两个附加操作的队列。这两个附加的操作支持 阻塞和插入和移除方法。 支持阻塞的插入方法:队列满时,队列会阻塞插入元素的线程,直到队列不满。 支持阻塞的移除方法:队列空时,获取元素的线程会等待队列变为非空。 二.阻塞队列的应用场景 阻塞队列常用于生 阅读全文
posted @ 2020-08-19 09:36 shumeigang 阅读(304) 评论(0) 推荐(0)
摘要: 什么是ConcurrentHashMap?ConcurrentHashMap 是java集合中map的实现,是哈希表的线程安全版本,即使是线程安全版本, ConcurrentHashMap的性能也十分可观。但是在不同的jdk版本中,其实现也不一样,本文主要基于jdk1.8版本的实现讨论。 Concu 阅读全文
posted @ 2020-08-19 09:35 shumeigang 阅读(738) 评论(0) 推荐(0)

2020年8月14日

摘要: 什么是ConcurrentHashMap?ConcurrentHashMap 是java集合中map的实现,是哈希表的线程安全版本,即使是线程安全版本, ConcurrentHashMap的性能也十分可观。但是在不同的jdk版本中,其实现也不一样,本文主要基于jdk1.8版本的实现讨论。 Concu 阅读全文
posted @ 2020-08-14 17:23 shumeigang 阅读(11903) 评论(1) 推荐(1)
摘要: 为什么要用join()方法 如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是 主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了 join() 的作用 让父线程等待子线程结束之后才能继续运行 阅读全文
posted @ 2020-08-14 10:51 shumeigang 阅读(210) 评论(0) 推荐(0)

导航