您可以向父线程抛出异常吗

时间:2019-05-04 11:18:49

标签: java multithreading java-threads

我应该实现一个原始的多线程服务器,该服务器为每个连接启动一个新线程。

线程之一可能应该获得消息以关闭服务器。

是否可以从子线程之一通知父线程以停止接受新连接并关闭服务器?

2 个答案:

答案 0 :(得分:0)

您可能已经知道,可以在多个线程上共享变量。

您可以使用布尔变量,例如exceptionOccuredserverShutdown,它们的默认值为false,并且在每个线程的异常处理程序中,将此变量设置为true。

在主线程中,您将监视此变量的值并进行必要的工作,以防该变量变为true(即停止所有线程等)。

要实现此目的,您必须先阅读有关volatile keyword

的信息

答案 1 :(得分:0)

线程间通信有几种方法:

  1. 您可以保持共享状态(多线程中的邪恶根源),并且 更新它,并让主线程多次检查该状态 (使用挥发物或屏障)
  2. 在创建工作线程时,您可以通过 主线程的实例,以及是否有任何线程希望 停止主线程可以调用主线程上的方法来停止 接受更多请求(比以前的解决方案优化)。