1.第一种方式,用 synchronized 关键字来实现

public class ThreadDemo {static int count = 0;static Object lock = new Object();public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(new ThreadDemo.Thread1());Thread t2 = new Thread(new ThreadDemo.Thread2());t1.start();Thread.sleep(100);t2.start();}static class Thread1 implements Runnable {@Overridepublic void run() {while (count < 100) {synchronized (lock) {if (count % 2 == 0) {System.out.println("偶数线程 : " + count);count++;}}}}}static class Thread2 implements Runnable {@Overridepublic void run() {while (count < 100) {synchronized (lock) {if (count % 2 != 0) {System.out.println("奇数线程 : " + count);count++;}}}}}
}

输出结果:

2.第二种方式, 用 wait() 和 notify() 方法实现

public class ThreadDemo1 implements Runnable {static int count = 0;static Object lock = new Object();@Overridepublic void run() {synchronized (lock) {while (count <= 100) {System.out.println(Thread.currentThread().getName() + " : " + count++);lock.notify();try {if(count <= 100){lock.wait();}} catch (InterruptedException e) {e.printStackTrace();}}}}public static void main(String[] args) throws InterruptedException {ThreadDemo1 threadDemo1 = new ThreadDemo1();Thread t1 = new Thread(threadDemo1, "偶数线程");Thread t2 = new Thread(threadDemo1, "奇数线程");t1.start();Thread.sleep(10);t2.start();}}

输出结果

java中用两个线程交替打印0-100偶数和奇数相关推荐

  1. java go多线程:两个线程交替打印 0~100 的奇偶数

    最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...

  2. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数

    作者:dadiyang来源:https://blog.csdn.net/dadiyang/article/details/88315124 面试场景 面试官:Java多线程了解吗?你给我写一下,起两个 ...

  3. Java常见的面试算法题:实现两个线程交替打印1到100的数

    Java常见的面试算法题:实现两个线程交替打印1到100的数 思路: 这是涉及到多个线程打印的问题,一定会用到锁的(synchronized),故这就是一个多线程打印的典型案例. 代码实现: pack ...

  4. Java两个线程交替打印奇偶数(两种方法对比)

    简介 本文将承接文章<Java多线程wait()和notify()系列方法使用教程>,我们将通过"两个线程交替打印100内的奇偶数",来展示下wait()方法和noti ...

  5. 使用Java线程并发库实现两个线程交替打印的线程题

    背景:是这样的今天在地铁上浏览了以下网页,看到网上一朋友问了一个多线程的问题.晚上闲着没事就决定把它实现出来. 题目: 1.开启两个线程,一个线程打印A-Z,两一个线程打印1-52的数据. 2.实现交 ...

  6. java让两个线程交替_java两个线程实现: 两个线程交替打印字母和数

    两个线程交替打印字母和数字: 1A2B3C4D5E6F7G public class LockConditionTest { public static void main(String[] args ...

  7. java 线程交替输出,[java]java经典问题之线程交替打印数字

    问题 给出两个线程,要求两个线程交替打印从1到100,例如:A线程打印1,B线程打印2,A线程打印3...依次类推,直到打印到100 思路 这里主要是考察对java中wait/notifyAll机制的 ...

  8. 如何让两个线程交替打印整数1-100?你的答案呢?

    前端时间下班临走前看到同事做尝试的一个题目:如何让两个线程交替打印整数1-100? 好几年没有写代码玩了,想了想,花了十多分钟写了个答案: #include<stdio.h> #inclu ...

  9. java多线程交替打印_使用Java实现三个线程交替打印0-74

    使用Java实现三个线程交替打印0-74 题目分析 三个线程交替打印,即3个线程是按顺序执行的.一个线程执行完之后,唤醒下一个线程,然后阻塞,等待被该线程的上一个线程唤醒.执行的顺序是一个环装的队列 ...

最新文章

  1. 为 ASP.NET Datagrid 创建自定义列
  2. 侠客风云传服务器维护,《侠客风云传online》4月20日服务器数据互通公告
  3. PostgreSQL 电商业务(任意维度商品圈选应用) - json包range数组的命中优化 - 展开+索引优化...
  4. 一个小程序:图片代替鼠标移动
  5. Python6种创建字典的方式
  6. 小米、360、京东之后 阿里联手美的杀入智能家居市场
  7. 让你不富都难的28个理财习惯
  8. 在Python中执行JavaScript代码并进行数据交换
  9. LAMP源码安装配置实战
  10. 微服务架构-设计总结
  11. 海外资管业价格战有多疯狂?史上首个零费率基金横空出世
  12. Oracle等待事件之Enqueue(锁)
  13. Linux内核regulator架构和编写
  14. kubelet源码 删除pod pod_workers.go(三)
  15. 运维校招面经汇总(来源牛客网)
  16. navicat创建MySql定时任务详解
  17. python实现京东秒杀
  18. 势流理论 matlab程序,势流理论 1.ppt
  19. weblogic修改banner_Weblogic多个漏洞复现
  20. PyTorch实现PPO代码

热门文章

  1. 容器技术 - docker
  2. HashMap面试深入详解jdk1.8
  3. python如何收集数据_用Python做数据清洗:采集几百个xls或csv中的数据并汇总
  4. Linux怎么让文件按大小排序,linuxsortlinux系统下,按文件的大小进行排序的命令...
  5. php 检测服务器网速_php测试用户网速
  6. 经纬度坐标转换xy坐标 python_在Python中使用NewtonRaphson迭代将经纬度转换为xy Mollweide地图坐标...
  7. Ubuntu 16.04 命令行 关机 or 重启
  8. 《深入理解Hadoop(原书第2版)》——1.3大数据的编程模型
  9. go 1.4支持Android的说明(译文)
  10. CentOS安装编译环境