我的程序遇到问题,试图睡觉并且没有睡觉。
现在我正在运行2线程,标准线程检查TCP设备的输入(两个设备已连接),另一个线程处理来自键盘的输入。
我有一个场景,我将停止其中一个线程10秒,以便它可以接收命令。
到目前为止的代码:
else if ((inputReceived.startsWith("RM20"))) {
RM20Received = "Yes";
showMenu();
display = (inputReceived.substring(2,inputReceived.length()));
if (scaleInput == null || scaleInput == "B" || scaleInput == "T") {
System.out.println("Please enter correct RM20 value within 10 seconds");
Thread.sleep(10000);
if ()
userValue = scaleInput;
out.writeBytes("RM20 A " + userValue +"\r\n");
display = inputReceived;
showMenu();
scaleInput = null;
}
}
如您所见,我正在使用Thread.sleep(10000)
。我想要睡眠Thread
,就像我一样,但是"无限",但只要有人从键盘输入一个输入,就应该让线程继续运行。
有一些简单的方法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
是的,有一种简单的方法,那就是使用旧时尚阻止IO。你有的代码
发布不包括你如何获得输入,所以我不能那么具体,但一般
当你尝试从像tcp套接字的流读取或用户正在写的东西
stdin读取调用将阻塞,直到数据可用。例如,将stdin包装在
bufferedReader和刚刚调用readLine
将使线程等待直到数据
在继续之前可用。如果您没有任何特定需求,那将是您的全部
需要。无需拨打Thread.sleep
。
如果这对您没有帮助,那么您需要更明确地了解自己的身份 做得到你正在等待的输入。