• yy
    2019-11-20
    list.forEach(Thread::interrupt);中Thread::interrupt是什么意思

    作者回复: 对于list里的每个Thread对象,调用Thread对象的interrupt方法。

    
     1
  • 不做拖拉机
    2019-12-09
    什么场景需要把线程设置为守护线程呢

    作者回复:
    有些线程就是为了为程序做一些清理或者辅助工作的。最原始的就是JVM里的执行finalize方法的线程(当然现在不推荐使用finalize方法了,这是另一说)。如果你现在debug一个Java进程,还能在frame里找到这个守护线程。

    还有后面和守护线程有点关系的场景,就是发送心跳。在后面的聊天程序中,我们提出了一个心跳检查功能。因为客户端和服务器端的网络连接是不可靠的,所以对于一个成熟的软件来说,如果有涉及客户端和服务器端的长连接(可以简单认为不主动断开的连接,比如聊天的客户端服务器,HDFS等集群的worker和master的连接),都会使用心跳机制。简单来说,就是启动一个线程,然后定期发送一个心跳数据包,表示这边的程序还在正常工作。

    而这个心跳线程,就应该在没有任何非守护线程的情况下结束。可以说是一个典型的守护线程的用例。

    守护线程还有很多用例,可能具体的场景没有心跳检测这么直观。只要从业务逻辑上来说,这些线程不应该在没有别的工作线程在运行的情况下继续运行,那么这个线程就应该是守护线程。

    
    
  • 毛利
    2019-10-18
    就在这里不懂

    作者回复: 现在懂了么?

    
    
我们在线,来聊聊吧