我不太明白你的意思,你难道是说在A中写
B xx=new B();
xx.waitfor();
不行是不是这个意思。如果我理解得没错。你完全可以在B的构造函数里面调用waitfor。
当然你可能不愿意改变这个构造函数。那么你可以另外再写一个构造函数,在里面调用waitfor专门针对A初始化B这种情况。然后在A里面调用这个构造函数。一个疑问是你难在B的构造函数里面就start线程了?这样不好哦。通常再提供一个start是比较合适的。
总之你的设计很有问题。

解决方案 »

  1.   

    我在B的构造函数里没有开始线程,如果watifor()放在构造函数里也不行,同样死锁.
    而且waitfor()是一个必须执行的方法,因为它在类B里必须被要求一开始就运行自己.
      

  2.   

    如果我单独运行类B,在它的main里面执行Bobject.waitfor()就没有问题.我的waitfor()里面有一个while(true)的一个循环,所以可能导致它在被其它类使用的时候发生死锁.