java并发- 并发工具类

thread.join原理

假设A线程中执行threadB.join(),基本等价于以下代码段

//threadB.join()等价于以下代码段
synchronized(threadB){
    while(threadB is alive)
        threadB.wait();
}

当threadB销毁时,虚拟机会执行threadB.notifyAll(),然后线程A就可以继续执行了。

CountDownLatch

等待多线程执行完成

CountDownLatch c = new CountDownLatch(2);
c.countDown();
c.await();//这个会阻塞,直到执行了n次(构造函数中的数值) c.countDown();

同步屏障CyclicBarrier

让一组线程到达一个屏障时阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被阻塞的线程才会继续执行下去。

CyclicBarrier barrier = new CyclicBarrier(2);
barrier.await();//阻塞于屏障,直到最后一个线程到达屏障。

CyclicBarrier barrier = new CyclicBarrier(2, Runable());//这种构造方式下,最后一个屏障到达时,优先执行构造函数中指定的操作。

控制并发线程数的Semaphore

Semphore s = new Semphore(10);
s.acquire();
s.release();

线程间交换数据的Exchanger

Exchanger<String> exgr = new Exchanger<>();
exgr.exchange("i am cool");//线程A
String res = exgr.exchange("i am beautiful");//线程B,res = "i am cool"
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容