静态变量
/** * @author luxiangxing * @time 2017年5月7日 * @email [email protected] * @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 [email protected] * @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; } }