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 多线程中。两个线程交替执行,一个输出偶数,一个输出奇数(方法一)
最新推荐文章于 2023-07-02 13:49:19 发布