美文网首页程序员
java并发- 并发工具类

java并发- 并发工具类

作者: 油多坏不了菜 | 来源:发表于2019-03-07 23:11 被阅读0次

    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"
    

    相关文章

      网友评论

        本文标题:java并发- 并发工具类

        本文链接:https://www.haomeiwen.com/subject/ojukpqtx.html