下面的代码创建一个新的Thread,并等待线程结束,直到主线程再次激活。
mythread.wait();打电话?Thread.join()呢?
公共静态空洞主(String[] args) {
线程my线程=新MyThread("hello");mythread.start();同步(my线程){ try { mythread.wait();} catch (InterruptedException e) {}发布于 2015-10-21 16:05:50
当线程完成运行时,它会调用自己的notifyAll()。这是 is implemented:它在线程上等待。因此,由于您的主线程在线程上等待,一旦它完成运行,主线程就会被通知,并且可以继续执行。
您违反了一条记录在案的规则:永远不要等待线程对象。您还违反了另一个问题:应该始终在循环中调用wait(),检查条件。
发布于 2015-10-21 16:06:52
它的工作方式是,当myThread终止时,它调用notifyAll()来唤醒您的myThead.wait()。检查Thread.join()方法的java文档,其中它引用了它的实现。
请参阅Java synchronization is doing auto notify on exit ? Is this expected?
为什么不改用联接呢?我觉得你应该这样做。少写你要写的代码。它实际上并不比您在这里实现的更多,其他阅读您的代码的人可能更熟悉使用该调用来等待线程退出。
https://stackoverflow.com/questions/33263428
复制相似问题