java实现比较高效的两线程交替执行

本文介绍了如何借鉴进程管理的PV操作原理,利用Java的CyclicBarrier类来实现两个线程交替执行,避免了低效的加锁和等待唤醒机制。通过示例代码展示了交替运行的效果,并建议读者理解PV操作和CyclicBarrier的使用以提高理解。
摘要由CSDN通过智能技术生成

大部分网络上的教程

都是让我们使用加锁,然后等待唤醒机制,感觉效率很低。

想法的来源和思路

最近在看软件设计师的考试内容,有个题就是讲进程管理的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.
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值