用生产者和消费者模式实现奇数偶数不同线程交替输出
生活随笔
收集整理的這篇文章主要介紹了
用生产者和消费者模式实现奇数偶数不同线程交替输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要求
使用生產者和消費者模式實現,交替輸出: 假設只有兩個線程,輸出以下結果:t1-->1t2-->2t1-->3t2-->4t1-->5t2-->6....要求:必須交替,并且t1線程負責輸出奇數。t2線程負責輸出偶數。兩個線程共享一個數字,每個線程執行時都要對這個數字進行:++代碼
public class Test {public static void main(String[] args) {Num num = new Num(1);Thread t0 = new Thread(new OddNumber(num));t0.setName("奇數");Thread t1 = new Thread(new EvenNumber(num));t1.setName("偶數");t0.start();t1.start();} } public class OddNumber implements Runnable{private Num number;public OddNumber(Num number) {this.number = number;}public OddNumber() {}@Overridepublic void run() {while (true){synchronized (number){if (number.i % 2 != 0){System.out.println(Thread.currentThread().getName() + "--->" + number.i++);}else{number.notify();try {number.wait();} catch (InterruptedException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} } public class EvenNumber implements Runnable{private Num number;public EvenNumber(Num number) {this.number = number;}public EvenNumber() {}@Overridepublic void run() {while (true){synchronized (number){if (number.i % 2 == 0){System.out.println(Thread.currentThread().getName() + "--->" + number.i++);}else{number.notify();try {number.wait();} catch (InterruptedException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}} } public class Num {int i;public Num(int i){this.i = i;} }總結
以上是生活随笔為你收集整理的用生产者和消费者模式实现奇数偶数不同线程交替输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言-freopen函数输入简单使用举
- 下一篇: IIS+SSL