Wati方法详解

来源:互联网 发布:永年做网络销售标准件 编辑:程序博客网 时间:2024/06/11 00:04

Wait和Notify

这两个方法在Object类中定义,当线程A调用wait方法之后,线程A会停止执行,转为等待阻塞状态,进入等待队列。

这里要注意:
1.调用wait方法前该线程持有调用wait方法对象的锁,同理notify方法一样。这点很重要。

2.只有其他线程调用了notify方法,并且调用了notify方法的对象和上面所说的对象必须是同一个,才可能让A线程继续往下执行。

直接上马:

public class WaitNotify {    static Object object1= new Object();     static class T1 extends Thread{        public void run() {            synchronized (object1) {                System.out.println("T1 Run!");                try {                    System.out.println("T1 wait!");                    object1.wait();                    System.out.println("T1 end!");                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }    }    static class T2 extends Thread{    public void run() {        synchronized (object1) {            System.out.println("T2 Run!");            object1.notify();            try {                System.out.println("T2 sleep!");                Thread.sleep(2000);                System.out.println("T2 end!");            } catch (InterruptedException e) {                e.printStackTrace();            }        }        }    }    public static void main(String ra[]) {        T1 t1 = new T1();        T2 t2 = new T2();        t1.start();        t2.start();    }}
原创粉丝点击