开发一个实时应用程序,一旦我通过SocketIo向服务器发出消息并等待响应来自服务器通过SocketIo然后打破线程的睡眠,我必须使线程进入休眠状态。
for (TruckEnquiry value : list.values()) {
String json = "any random string";
SocketIO.mSocket.emit("server", json);
try {
sleep(5000); // Need to break this sleep from the UI thread of Android.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//这里我们从服务器获取消息,此时我想恢复该线程 private Emitter.Listener onNewMessage = new Emitter.Listener(){
@Override
public void call(final Object... args) {
runOnUiThread(new Runnable() {
@Override
public void run() {
JSONObject data = (JSONObject) args[0];
// threadArray.get(perticular_thread).resume(); // Want to implement this.
}
});
}
};
我在这个文件中有一个以上的线程,threadArray将包含所有这些。
提前谢谢你。
答案 0 :(得分:0)
你不能让一个线程进入休眠状态,因为Thread.sleep(int)是一个静态方法,可以“释放”应用程序线程池中的所有线程。
你可以:
1)在您发送JSON数据的同一连接中获取服务器响应。
2)通过在应用中设置TCP(或UDP)侦听器来侦听服务器最终响应。然后,服务器将使用URL“device_ip:listening_port”建立与应用程序的连接,应用程序将检索响应。