如何仅在 java 中的特定条件下唤醒休眠线程?
How can I wake a sleeping thread only with certain condition in java?
目前,我每 10 秒使用 Thread.sleep
函数从我的客户端 android 设备访问服务器,并检查是否有任何新内容已更新到服务器,并在之后对客户端设备进行相同的更新睡觉。所以每件事都在一个 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
}
}
由于您是让服务器在有限的时间内处于休眠状态,因此无法在该时间段内找到服务器状态,因此在该时间段内获取服务器状态是没有问题的,因为它处于休眠模式。为了获得服务器状态,线程必须从睡眠中醒来。因此,如果您需要通过休眠来减少服务器流量,您也必须在这段时间内牺牲服务器的离线状态。
目前,我每 10 秒使用 Thread.sleep
函数从我的客户端 android 设备访问服务器,并检查是否有任何新内容已更新到服务器,并在之后对客户端设备进行相同的更新睡觉。所以每件事都在一个 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
}
}
由于您是让服务器在有限的时间内处于休眠状态,因此无法在该时间段内找到服务器状态,因此在该时间段内获取服务器状态是没有问题的,因为它处于休眠模式。为了获得服务器状态,线程必须从睡眠中醒来。因此,如果您需要通过休眠来减少服务器流量,您也必须在这段时间内牺牲服务器的离线状态。