用生产者和消费者模式实现奇数偶数不同线程交替输出
生活随笔
收集整理的這篇文章主要介紹了
用生产者和消费者模式实现奇数偶数不同线程交替输出
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
要求
使用生產(chǎn)者和消費(fèi)者模式實(shí)現(xiàn),交替輸出: 假設(shè)只有兩個(gè)線程,輸出以下結(jié)果:t1-->1t2-->2t1-->3t2-->4t1-->5t2-->6....要求:必須交替,并且t1線程負(fù)責(zé)輸出奇數(shù)。t2線程負(fù)責(zé)輸出偶數(shù)。兩個(gè)線程共享一個(gè)數(shù)字,每個(gè)線程執(zhí)行時(shí)都要對(duì)這個(gè)數(shù)字進(jìn)行:++代碼
public class Test {public static void main(String[] args) {Num num = new Num(1);Thread t0 = new Thread(new OddNumber(num));t0.setName("奇數(shù)");Thread t1 = new Thread(new EvenNumber(num));t1.setName("偶數(shù)");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;} }總結(jié)
以上是生活随笔為你收集整理的用生产者和消费者模式实现奇数偶数不同线程交替输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言-freopen函数输入简单使用举
- 下一篇: IIS+SSL