如何在 java 中仅在特定条件下唤醒睡眠线程?



目前,我使用该功能每 10 秒从我的客户端 android 设备访问服务器Thread.sleep并检查是否有任何新内容已更新到服务器,并在睡眠后对客户端设备进行相同的更新。 所以每件事都在一个while循环中运行良好。但是现在我什至想检查即使在该睡眠模式下,服务器是否已更新某些内容。如果服务器可以使用一些新的更新,那么我必须中断该睡眠并从服务器更新到客户端设备,否则让它在一段时间内休眠。主要原因是我想增加睡眠时间,但同时检查服务器的状态以进行更新并进行更新。需要通过增加睡眠时间来减少服务器效率,但即使在睡眠之间也需要更新新的更新。

public void run() {
while( m_KeepRunning ) {
// 10s sleep to give the app time to start
try {
for( int i = 0; i < 10 && m_KeepRunning; i++) {
Thread.sleep( 1000 );
}
} catch (InterruptedException e) {
e.printStackTrace();
}

Log.d("SERVER", "--- Start update from Server ");
servercallfunction();// suppose to call server and check for new update :if do then  update to client machine 
}
}

由于您正在使服务器处于睡眠状态 一段时间 ,它将无法在该时间段内找到服务器状态,因此在该时间段内获取服务器状态是毫无疑问,因为它处于睡眠模式。为了获得服务器状态,线程必须从睡眠状态中出来。因此,如果您需要 通过进入睡眠状态来减少服务器流量,您也必须在此期间牺牲服务器的离线功能。

最新更新