Keep-Alive-Timer在JVisualVM线程调查员中意味着什么?

时间:2016-09-05 05:16:38

标签: java multithreading timer jvisualvm

enter image description here

这些Keep-Alive-Timer线程左侧有白色标签,白色标签未在下面描述其含义。我想知道如何创建这些Keep-Alive-Timer线程以及原因。

enter image description here

实际上,我正在使用Timer检查程序中的心跳消息。每当心跳到来时,我会安排一个新的TimerTask延迟6秒。如果没有心跳,则会触发TimerTask并发送警报。

1 个答案:

答案 0 :(得分:3)

Keep-Alive-Thread负责维护KeepAliveCache,它存储有关使用Keep-Alive属性的http连接的信息。如果你有至少一个这样的连接,将会有一个Keep-Alive-Thread观看它们。当您关闭所有保持活动连接时,此线程将被销毁。当您向空缓存添加新的保持活动连接时,JVM会再次启动此线程。

白色表示线程不再存在。如您所见,您的JVM会不断创建和销毁此线程。

您似乎正在使用跟踪心跳的计时器任务手动执行相同的工作。 6秒后关闭那些保持活动的连接,JVM会破坏Keep-Alive-Thread。您创建一个新连接,JVM开始新观看Keep-Alive-Thread。

如果在http连接上使用Keep-Alive属性,最好只设置正确的超时并让JVM执行内务处理工作。