CyclicBarrier
import android.util.Log; import java.util.concurrent.CyclicBarrier; /** * created by wangyu on 2019-05-20 * description : 线程栏 */ public class CyclicBarrierUtil { public void doOnOneThread(){ OneThread oneThread = new OneThread(); oneThread.start(); } class OneThread implements Runnable{ CyclicBarrier nCb; public void start(){ Log.e("Tag", "Start"); // 数量,以及到达阈值之后线程 nCb = new CyclicBarrier(2, OneThread.this); startOne(); startTwo(); } private void startOne(){ //延时3秒后 到达栅栏 new Thread(new Runnable() { @Override public void run() { Log.e("Tag", "StartOne"); try { //延时3秒 Thread.sleep(3000); nCb.await(); }catch (Exception e){ } Log.e("Tag", "EndOne"); } }).start(); } private void startTwo(){ //直接到达栅栏 之后延时4秒 new Thread(new Runnable() { @Override public void run() { Log.e("Tag", "StartTwo"); try { nCb.await(); Log.e("Tag", "TwoSleep"); Thread.sleep(4000); }catch (Exception e){ } Log.e("Tag", "EndTwo"); } }).start(); } @Override public void run() { //作为参数传递 到达栅栏之后执行 Log.e("Tag", "Run"); } } }