练习:交替打印奇数偶数

(照着别人的代码打的

wait,notify实现

 //wait ,notify实现,性能较差
    public static  int i=1;
    public static final int TOTAL=100;
    public static Object lock=new Object();
    public static void main(String[] args) throws InterruptedException{
         Thread t1=new Thread(()->{
             while(i<TOTAL){
                 synchronized (lock){
                     if(i%2==1){
                         System.out.println("奇数线程:"+i++);
                         lock.notify();
                     }else{
                         try {
                             lock.wait();
                         }catch (InterruptedException e){
                             e.printStackTrace();
                         }
                     }
                 }
             }
         });

        Thread t2=new Thread(()->{
            while(i<=TOTAL){
                synchronized (lock){
                    if(i%2==0){
                        System.out.println("偶数线程:"+i++);
                        lock.notify();
                    }else{
                        try {
                            lock.wait();
                        }catch (InterruptedException e){
                            e.printStackTrace();
                        }
                    }
                }
            }
        });
        t1.start();
        t2.start();
    }

在这里插入图片描述

CountDownLatch

 //交替打印奇数偶数
    //countDOwnLatch是一个同步类工具
private static AtomicInteger num=new AtomicInteger(1);
private static CountDownLatch countDownLatch=new CountDownLatch(2);//表示有两个线程
    public static void main(String[] args) throws InterruptedException {

        Thread t1=new Thread(){
            public void run(){
                while(num.intValue()<100){
                    if(num.intValue()%2==1){
                        System.out.println("奇数线程: "+num.intValue());
                        num.incrementAndGet();
                    }
                    countDownLatch.countDown();
                }
            }
        };

        Thread t2=new Thread(){
            public void run(){
                while(num.intValue()<=100){
                    if(num.intValue()%2==0){
                        System.out.println("偶数线程: "+num.intValue());
                        num.incrementAndGet();
                    }
                    countDownLatch.countDown();
                }
            }
        };
    t1.start();
    t2.start();
    countDownLatch.await();

别人的链接(https://www.jianshu.com/p/1c8e278564fb)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值