Java 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法一)

xiaoxiao2021-02-28  61

public class DigitPrinterExample { public static void main(String[] args) { Number num = new Number(); OddPriter oddPriter = new OddPriter(num); EvenPrinter evenPrinter = new EvenPrinter(num); Thread oddthread = new Thread(oddPriter); Thread eventhread = new Thread(evenPrinter); oddthread.start(); eventhread.start(); } } class Number{ int i = 0; boolean flag = true; } /** * 打印奇数得线程 */ class OddPriter implements Runnable{ Number num; public OddPriter(Number num) { this.num = num; } @Override public void run() { while (num.i <= 100){ //同步锁保证一致性 synchronized (num){ if(num.flag){ try{ num.wait(); }catch (InterruptedException e){ e.printStackTrace(); } }else{ System.out.println(" 奇数:" + num.i); num.i++; num.flag = true; num.notify(); } } } } } /** * 打印偶数的线程 */ class EvenPrinter implements Runnable{ Number num; public EvenPrinter(Number num) { this.num = num; } @Override public void run() { while (num.i <= 100){ synchronized (num){ if (!num.flag){ try { num.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else{ System.out.println(" 偶数:" + num.i); num.i++; num.flag = false; num.notify(); } } } } } ---------- 运行结果: 偶数:0 奇数:1 偶数:2 奇数:3 偶数:4 奇数:5 偶数:6 奇数:7 偶数:8 奇数:9 偶数:10
转载请注明原文地址: https://www.6miu.com/read-45838.html

最新回复(0)