concurrent.util包下的常用类

CyclicBarrier使用:

    假设一个场景:每个线程代表一个运动员,当运动员都准备好后才一起出发,只要有一个人没有准备好就一起等待。
    CyclicBarrier cb = new CyclicBarrier(3);
    ExecutorService pool = Executors.newFixedThreadPool(3);
    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});
    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});

    pool.submit(new Thread(new Runnable() {  run(){

            cb.await();
    }});

    pool.shutdown();  //同时启动

如果线程数小于3会一直等待下去

CoutDwonLacth使用:

    经常用于监听某些初始化操作,主线程可以通过await()方法直接进入阻塞状态,其他线程进行初始化,初始化完毕后通过countdown()唤醒主线程继续执行操作。

Callable和Future的结合使用:

    其实就是jdk基于future模式的一个封装,当主线程需要数据又不立即需要使用时,主线程继续向下执行,future模式会悄悄另起线程去执行真正的任务,执行完毕后放进FutureStak类中,当主线程需要数据时就从该类中取出。体现的是异步加载的策略。

你可能感兴趣的:(Java线程)