标签:代码块 created catch www nbsp size code 参与 cat
java中,wait和notify这两个方法是一对,wait方法阻塞当前线程,而notify是唤醒被wait方法阻塞的线程。
/** * Created by regis on 2017/4/23. */ public class Service { public void testMethod(Object lock) { try { synchronized (lock) { System.out.println("begin wait() ThreadName=" + Thread.currentThread().getName()); lock.wait(); if (Thread.currentThread().getName().equals("Thread-1")) { Thread.sleep(50000); } System.out.println("end wait() ThreadName=" + Thread.currentThread().getName()); } } catch (InterruptedException e) { e.printStackTrace(); } } public void synNotifyMethod(Object lock) { synchronized (lock) { System.out.println("begin notify() ThreadName=" + Thread.currentThread().getName()); lock.notifyAll(); System.out.println("end notify() ThreadName=" + Thread.currentThread().getName()); } } }
/** * Created by regis on 2017/4/23. */ public class SynNotifyMethodThread extends Thread { private Object lock; public SynNotifyMethodThread(Object lock) { super(); this.lock = lock; } @Override public void run() { Service service = new Service(); service.synNotifyMethod(lock); } }
/** * Created by regis on 2017/4/20. */ public class Test { public static void main(String[] args) { Object lock = new Object(); ThreadA a = new ThreadA(lock); a.start(); ThreadA b = new ThreadA(lock); b.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } SynNotifyMethodThread c = new SynNotifyMethodThread(lock); c.start(); } }
/** * Created by regis on 2017/4/23. */ public class ThreadA extends Thread{ private Object lock; public ThreadA(Object lock) { super(); this.lock = lock; } @Override public void run() { Service service = new Service(); service.testMethod(lock); } }
标签:代码块 created catch www nbsp size code 参与 cat
原文地址:http://www.cnblogs.com/ismallboy/p/6785312.html