实在不知道如何用一句话描述清楚我的问题,不好意思了
网上看到一篇讲wait/notify的文章,把代码拷下来debug了一下(代码如下所示),发现一个奇怪的问题,主线程总是先拿到b的锁,而b这个线程运行后,始终无法拿到自身的锁,直到主线程内b.wait将b释放掉之后,很不理解,不知道有谁能解答我的疑惑,谢谢!
class ThreadA
{
public static void main(String[] args)
{
ThreadB b=new ThreadB();
b.start();
System.out.println("b is start....");
synchronized(b)//括号里的b是什么意思,起什么作用?
{
try
{
System.out.println("Waiting for b to complete...");
b.wait();//这一句是什么意思,究竟让谁 000-834 wait?
System.out.println("Completed.Now back to main thread");
}catch (InterruptedException e){}
}
System.out.println("Total is :"+b.total);
}
}
class ThreadB extends Thread
{
int total;
public void run()
{
synchronized(this) //
{
System.out.println("ThreadB is running..");
for (int i=0;i<100;i++ )
{
total +=i;
System.out.println("total is "+total);
}
notify();
}
}
}