我的Notify怎么唤不醒我的Wait()。。求大腿告知

 package javaRevise;

public class HuanxingThread
{
    public static void main(String[] args)
    {
        HuanxingThread huanxingThread = new HuanxingThread();
        Thread t1 = new Thread()
        {
            int i = 'a';
            public void run() 
            {
                try
                {
                    i++;
                    System.out.println("我已经睡了");
                    System.out.println("i:"+i);
                    synchronized (this)
                    {
                        wait();
                    }
                    System.out.println("我被唤醒了");
                }
                catch (InterruptedException e)
                {
                    e.printStackTrace();
                }
            }
        };

        Thread t2 = new Thread()
        {
            public void run() 
            {
                synchronized(this)
                {
                    for (int i = 0; i <= 10; i++)
                    {
                        if(i == 0)
                        {
                            notify();
                        }
                        System.out.println(i);
                    }
                }
            }
        };
        t1.start();
        t2.start();
    }
}

题主wait(),notify()调用的是t1,t2对象中的方法,两者没有关系。
想要实现进程通讯,wait(),notify()需要是同一个对象的方法,新建一个对象obj,synchronized(obj),调用obj.wait(),obj.notify(),这样两个线程才能用同一个对象的锁。

你这两个线程压根就没关连啊,就是互不妨碍啊
t1一直在等待被唤醒

synchronized(this) 改成 synchronized(obj),其中Object obj = new Object;然后obj.wait(); obj.notify();
这样应该就可以了。

两个线程用同一把锁 锁个代码块应该能实现你要的效果

代码实例化线程使用了匿名内部类, 新开的线程持有锁对象不同造成的

wai 与notify只能针对同一个监视器锁进行,换言之,同步要使用同一个锁