您的位置:首页 > 编程语言 > Java开发

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

2017-07-10 22:40 886 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 多线程
相关文章推荐