我们有一个用 Java 编写的 RMI 客户端应用程序,它需要定期向服务器应用程序发送“保持活动”消息。我们将其实现为一个单独的心跳线程,它将保持活动状态消息发送到服务器,然后使用 Thread.sleep() 休眠 15 秒。
线程设置为高优先级:
Thread heartbeatThread = new Thread(new HeartbeatRunnable(server));
heartbeatThread.setPriority(Thread.MAX_PRIORITY);
heartbeatThread.start();
但是,当客户端运行的机器占用大量 CPU 时,我们会发现心跳丢失,这导致服务器认为我们的客户端应用程序已经死亡。
我们在我的主线程中添加了 Thread.yield() 调用,尽管这并没有解决问题。
有什么方法可以保证在我的应用程序仍在运行时按时发送心跳?