这是我计划的一部分。
Thread rcv_thread = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("getmsg");
while (true) {
/*try {
Thread.sleep(0);
} catch (InterruptedException e) {
e.printStackTrace();
}*/
if (!getmsg.isEmpty() && socket.isConnected()) {
System.out.println("handle");
getmsg_ = getmsg.get(0).split(";");
if (socket.getInetAddress().toString()
.equals("/" + getmsg_[0])) {
PW.println(getmsg_[2] + " sent from"
+ getmsg_[1]);
getmsg.remove(0);
}
}
}
}
});
rcv_thread.start();
真的很奇怪。当我评论while(true){}
的范围时,程序永远不会在try{}catch{}
范围内运行
但是,如果我取消try{}catch{}
范围内的评论,则循环将成功运行并在while(true){}
范围内运行
这是我的问题。抱歉我的英语不好。
答案 0 :(得分:0)
如果没有wait()
(这里更好地替换sleep()
),您的循环将消耗所有 CPU资源,因此内容可能会被编译器禁用。
您的案例中的实际原因将取决于体系结构/ Java编译器/ JVM /设置......