Java 线程通知问题

Java 线程通知问题,java,multithreading,Java,Multithreading,从主线程开始,我启动了一个子线程 在子线程run()方法中,调用wait()方法 在main方法中,为子线程调用join()方法,而不通知子线程 我注意到,主线程和子线程都还在运行,这是一种已知的行为吗?为什么?通过调用wait可以阻止子线程,直到notify为止;通过调用join可以阻止主线程,直到子线程结束。因此,您有一个可预测的死锁。我不会将此行为称为“已知”,而是“指定的”。通过调用wait可以阻止子线程,直到notify,通过调用join可以阻止主线程,直到子线程结束。因此,您有一个可

从主线程开始,我启动了一个子线程 在子线程
run()
方法中,调用
wait()
方法 在main方法中,为子线程调用
join()
方法,而不通知子线程


我注意到,主线程和子线程都还在运行,这是一种已知的行为吗?为什么?

通过调用
wait
可以阻止子线程,直到
notify
为止;通过调用
join
可以阻止主线程,直到子线程结束。因此,您有一个可预测的死锁。我不会将此行为称为“已知”,而是“指定的”。

通过调用
wait
可以阻止子线程,直到
notify
,通过调用
join
可以阻止主线程,直到子线程结束。因此,您有一个可预测的死锁。我不会将此行为称为“已知”,而是“指定的”。

您的意思是线程都在调试器中“运行”吗?如果是这样,那是因为调试器没有向您显示线程状态,而是显示您是否已在调试器中暂停/挂起线程。如果wait()方法不在任何同步上下文中,您如何调用它?(至少你没有提到)它应该抛出一个非法的MonitorStateException。你是说线程都在调试器中“运行”吗?如果是这样,那是因为调试器没有向您显示线程状态,而是显示您是否已在调试器中暂停/挂起线程。如果wait()方法不在任何同步上下文中,您如何调用它?(至少你没有提到)它应该抛出一个非法的MonitorStateException。