资讯专栏INFORMATION COLUMN

经典面试题——两个线程交替打印奇数和偶数

Yi_Zhi_Yu / 1115人阅读

摘要:今天在和同事讨论线程说到了这个我就实现了一把直接贴代码打印偶数的线程打印奇数的线程输出结果打印奇数的线程打印偶数的线程打印奇数的线程打印偶数的线程打印奇数的线程打印偶数的线程打印奇数的线程打印偶数的线程打印奇数的线程如有不对的地方,还请指教

今天在和同事讨论线程说到了这个我就实现了一把 直接贴代码

  public class Demo2 {
    private static volatile int i = 1;

    public static void main(String[] args) throws Exception {
        final Object obj = new Object();

        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                synchronized (obj) {
                    for (; i < 10; ) {
                        System.out.println(Thread.currentThread().getName() + " " + (i++));
                        try {
                            obj.notifyAll();
                            obj.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    obj.notifyAll();
                }
            }
        };

        Thread t1 = new Thread(runnable, "打印偶数的线程 ");
        Thread t2 = new Thread(runnable, "打印奇数的线程 ");
        t2.start();
        t1.start();
    }
}

输出结果

打印奇数的线程 1
打印偶数的线程 2
打印奇数的线程 3
打印偶数的线程 4
打印奇数的线程 5
打印偶数的线程 6
打印奇数的线程 7
打印偶数的线程 8
打印奇数的线程 9
如有不对的地方,还请指教

原文地址 https://www.51csdn.cn/article...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75139.html

相关文章

  • ❤️思维导图整理大厂面试高频数组10: 3种方法彻底解决中位数问, 力扣4❤️

    此专栏文章是对力扣上算法题目各种方法的总结和归纳, 整理出最重要的思路和知识重点并以思维导图形式呈现, 当然也会加上我对导图的详解. 目的是为了更方便快捷的记忆和回忆算法重点(不用每次都重复看题解), 毕竟算法不是做了一遍就能完全记住的. 所以本文适合已经知道解题思路和方法, 想进一步加强理解和记忆的朋友, 并不适合第一次接触此题的朋友(可以根据题号先去力扣看看官方题解, 然后再看本文内容). 关...

    XanaHopper 评论0 收藏0
  • Java中的显示锁ReentrantLock使用与原理

    摘要:使当前线程休眠,不可调度。这三种情况下会恢复其它线程调用了,当前线程恰好被选中了恢复执行其它线程调用了假醒。 考虑一个场景,轮流打印0-100以内的技术和偶数。通过使用 synchronize 的 wait,notify机制就可以实现,核心思路如下: 使用两个线程,一个打印奇数,一个打印偶数。这两个线程会共享一个数据,数据每次自增,当打印奇数的线程发现当前要打印的数字不是奇数时,执行...

    tabalt 评论0 收藏0
  • 一道多线程面试引起的自我救赎

    摘要:重温一个面试题内容数组内容为数组内容为个英文字母,使用两个线程分别输入两个数组,打印内容为这样的规律提取一下核心内容,去除次要内容两个线程需要交替执行,打印数字的线程需要先执行,数组打印完毕后线程需要结束。 一道多线程面试题引起的自我救赎 近日去一个知名互联网企业参加面试,之前准备多多信心满满,但是面试一开始就是一道不起眼的编程题 数组A内容为 1,2,3,4...52 ,数组B内容...

    BaronZhang 评论0 收藏0
  • 深入理解线程通信

    摘要:前言开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些逻辑的场景。可以采用中断线程的方式来通信,调用了方法其实就是将中的一个标志属性置为了。实际开发中可以灵活根据需求选择最适合的线程通信方式。 showImg(https://segmentfault.com/img/remote/1460000013842442); 前言 开发中不免会遇到需要所有子线程执行完毕通知主线程处理某些...

    tuomao 评论0 收藏0
  • 【算法技巧】位运算装逼指南

    摘要:位算法的效率有多快我就不说,不信你可以去用亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这...

    _ang 评论0 收藏0

发表评论

0条评论

Yi_Zhi_Yu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<