分类：电脑/网络-程序设计-JAVA相关
问题：java线程问题?classa{inta=1;synchroni 
class a {    int a=1;   synchroniz  void A()  {        Thread th= rrentThread();    while(a!=0)    {    try{      intln("wait"+"::"+ tName());     a=0;    this.wait();      }catch(Exception e){}       }                 intln("notify"+"::"+ tName());          tclass a {    int a=1;   synchroniz  void A()  {        Thread th= rrentThread();    while(a!=0)    {    try{      intln("wait"+"::"+ tName());     a=0;    this.wait();      }catch(Exception e){}       }                 intln("notify"+"::"+ tName());          tify();                             }    }class B implements Runnable{    a t=new a();  public void run()  {                t.A();          }}class d{    public static void main(String args[])  {    B b=new B();    Thread t=new Thread(b);     tName("t");     Thread t2=new Thread(b);       tName("t2");      art();           art();      }}这个程序t最后为什么自己有执行了一次notify。
回答：你理解错了，不是又执行了一次 rify，这个结果是随机的，运行若干次，结果并不一样，是因为你两个线程操作了同一个对象，当其中一个线程wait的时候，另一个线程获得运行机会，就会执行notify，虽然你的Thread对象是两个，但是B对象是同一个，也就是说a对象也是同一个。这是可以理解的，下面是我执行你的程序出现的几个结果：
//1111111111111     t2线程先获得运行的结果
 ----------Run Java App ----------
wait::t2
notify::t
notify::t2

输出完成 (耗时 0 秒) - 正常终止
// 2222     t线程先获得运行的结果
 ----------Run Java App ----------
wait::t
notify::t2
notify::t