静态变量
/**
* @author luxiangxing
* @time 2017年5月7日
* @email xiangxingchina@163.com
* @tel 15330078427
*/
public class TwoThread implements Runnable {
private int id;
static Integer c ;
private Object o;
public TwoThread(int id, Object o) {
this.id = id;
this.o = o;
}
@Override
public void run() {
synchronized (o) {
while (this.c < 1000) {
// System.out.println(id+"> "+this.c);
if (this.c % 2 == id) {
System.out.println(id + " - " + c++);
o.notify();
} else {
try {
o.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public static void main(String[] args) {
Object o = new Object();
TwoThread t1 = new TwoThread(1, o);
TwoThread t2 = new TwoThread(0, o);
new Thread(t1).start();
new Thread(t2).start();
}
}
对象方式
/**
* @author luxiangxing
* @time 2017年5月7日
* @email xiangxingchina@163.com
* @tel 15330078427
*/
public class TwoThread implements Runnable {
private int id;
static Integer c ;
private Object o;
Num n ;
public TwoThread(int id, Object o,Num n) {
this.id = id;
this.o = o;
this.n = n;
}
@Override
public void run() {
synchronized (o) {
while (this.n.i < 1000) {
// System.out.println(id+"> "+this.c);
if (this.n.i % 2 == id) {
System.out.println(id + " - " + this.n.i);
this.n.setI(this.n.i+1);
o.notify();
} else {
try {
o.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
public static void main(String[] args) {
Object o = new Object();
Num n = new Num(1);
TwoThread t1 = new TwoThread(1, o,n);
TwoThread t2 = new TwoThread(0, o,n);
new Thread(t1).start();
new Thread(t2).start();
}
}
class Num{
int i ;
public Num(int i) {
this.i = i ;
}
public void setI(int i) {
this.i = i;
}
}