java实现比较高效的两线程交替执行
大部分网络上的教程
都是让我们使用加锁,然后等待唤醒机制,感觉效率很低。
想法的来源和思路
最近在看软件设计师的考试内容,有个题就是讲进程管理的pv操作的,结合这个pv操作的思想和java的CyclicBarrier这个类,想模仿一下题里的思路来实现比较高效的两线程交替执行
(为什么不用CountDownLatch?这个玩意我了解到是一次性的,不能反复使用,如果用它实现pv操作的话,要创建很多个对象,对内存和gc非常不友好。而CyclicBarrier是可以反复使用的)
废话不多说,上代码
代码片
.
/**
* @author zhouT
*/
public class ThreadAlternate {
public static final ThreadPoolExecutor THREAD_POOL = new ThreadPoolExecutor(2,
2,1, TimeUnit.MINUTES,new ArrayBlockingQueue<>(2),new MyThreadFactory());
private final static int CYCLE_TIMES = 1000;
public static void main(String[] args) {
//创建两个线程
CyclicBarrier one = new CyclicBarrier(2);
CyclicBarrier zero = new CyclicBarrier(2);
THREAD_POOL.