多线程技术: 两个线程交替打印奇数和偶数
1. 要打印的资源
1 package com.mytest.thread; 2 3 /** 4 * 要打印的资源 5 * 6 */ 7 public class Num { 8 int i = 1; 9 // 两个线程看, 交替执行的一个标志 10 boolean flag = false; 11 }
2. 打印奇数的线程
1 package com.mytest.thread; 2 3 public class PrintOdd implements Runnable { 4 Num num; 5 6 public PrintOdd(Num num) { 7 this.num = num; 8 9 } 10 11 public void run() { 12 while (num.i <= 100) { 13 synchronized (num) { 14 if (num.flag) { 15 try { 16 num.wait(); 17 } catch (Exception e) { 18 System.out.println(e.getMessage()); 19 } 20 21 } else { 22 System.out.println("奇数----" + num.i); 23 num.i++; 24 num.flag = true; 25 num.notify(); 26 } 27 28 } 29 } 30 } 31 }
3. 打印偶数的线程
1 package com.mytest.thread; 2 3 public class PrintEven implements Runnable { 4 5 Num num; 6 7 public PrintEven(Num num) { 8 this.num = num; 9 10 } 11 12 public void run() { 13 while (num.i <= 100) { 14 synchronized (num) {// 必须要用同意吧锁对象,这个对象是num 15 if (!num.flag) { 16 try { 17 num.wait();// wait()函数必须和锁死同一个 18 } catch (Exception e) { 19 System.out.println(e.getMessage()); 20 } 21 22 } else { 23 System.out.println("偶数----" + num.i); 24 num.i++; 25 num.flag = false; 26 num.notify(); 27 } 28 29 } 30 } 31 } 32 33 }
4. 主函数
1 package com.mytest.thread; 2 3 public class Main { 4 public static void main(String[] args) { 5 6 Num num = new Num(); 7 8 PrintOdd printOdd = new PrintOdd(num); 9 PrintEven printEven = new PrintEven(num); 10 11 Thread thread1 = new Thread(printOdd); 12 Thread thread2 = new Thread(printEven); 13 14 thread1.start(); 15 thread2.start(); 16 } 17 }
5. 运行结果
♥ 作者:明志健致远
♠ 出处:http://www.cnblogs.com/study-everyday/
♦ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
♣ 本博客大多为学习笔记或读书笔记,本文如对您有帮助,还请多推荐下此文,如有错误欢迎指正,相互学习,共同进步。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?