首页 > 编程语言 > 详细

面试题 多线程并发 两个线程交替打印

时间:2020-02-20 19:18:41      阅读:338      评论:0      收藏:0      [点我收藏+]

 

 

public class Test2 {
    private static int count = 0;
    private final static Object lock = new Object();
    static class TurningRunner implements Runnable {
        @Override
        public void run() {
            while (count <= 10) {
                // 获取锁
                synchronized (lock) {
                    // 拿到锁就打印
                    System.out.println(Thread.currentThread().getName() + ":" + count++);
                    // 唤醒其他线程
                    lock.notifyAll();
                    try {
                        // 如果任务还没有结束,则让出当前的锁并休眠
                        if (count <= 10) {
                            lock.wait();
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        Thread a = new Thread(new TurningRunner(), "偶数");
        Thread b = new Thread(new TurningRunner(), "奇数");
        a.start();
        b.start();
    }
}

 

面试题 多线程并发 两个线程交替打印

原文:https://www.cnblogs.com/yanhowever/p/12336744.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!