多个线程交替执行

复制代码
        static  void  test3() throws  InterruptedException{
            Lock lock=new ReentrantLock();
            Condition conditionLock1=lock.newCondition();
            Condition conditionLock2=lock.newCondition();
            Condition conditionLock3=lock.newCondition();
            Thread thread1=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        while (true) {
                            lock.lock();
                            System.out.println("1");
                           //Thread.sleep(1000);
                           conditionLock2.signal();
                           conditionLock1.await();
                            lock.unlock();
                        }

                    }catch (Exception e){

                    }

                }
            });
            Thread thread2=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        while (true) {
                            lock.lock();
                            System.out.println("2");
                           //Thread.sleep(1000);
                           conditionLock3.signal();
                          conditionLock2.await();
                            lock.unlock();
                        }
                    }catch (Exception e){

                    }

                }
            });


            Thread thread3=new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        while (true) {
                            lock.lock();
                            System.out.println("3");
                           // Thread.sleep(1000);
                            conditionLock1.signal();
                           conditionLock3.await();
                            lock.unlock();
                        }
                    }catch (Exception e){

                    }

                }
            });

            thread1.start();
            thread3.start();
            thread2.start();
        }
复制代码

 

posted @   甜菜波波  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示