文章标题
2017-09-25 11:39
232 查看
package day5; public class WaitNotify { public static void main(String[] args) { MyserviceNew my = new MyserviceNew(); ThreadM th1 = new ThreadM(my); th1.start(); ThreadN th2 = new ThreadN(my); th2.start(); } } class MyserviceNew{ public static int value = 0; //false代表前一个线程都在等待该线程打印 boolean flag =false; } class ThreadM extends Thread{ MyserviceNew myservice; public ThreadM(MyserviceNew myservice) { this.myservice = myservice; } @Override public void run() { synchronized(myservice) { while(MyserviceNew.value<100) { //System.out.println("even"); if(!myservice.flag) { MyserviceNew.value++; System.out.println("奇数"+MyserviceNew.value); myservice.flag = true ; myservice.notify(); try { myservice.wait(); } catch (InterruptedException e) { e.printStackTrace(); } }else { try { myservice.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } } } } class ThreadN extends Thread{ MyserviceNew myservice; public ThreadN(MyserviceNew myservice) { this.myservice = myservice; } @Override public void run() { synchronized(myservice) { while(MyserviceNew.value<100) { //System.out.println("odd"); if(myservice.flag) { MyserviceNew.value++; System.out.println("偶数"+MyserviceNew.value); myservice.flag = false; try { myservice.notify(); myservice.wait(); } catch (InterruptedException e) { e.printStackTrace(); } //myservice.flag = false; }else { try { myservice.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } }