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