Java 无限循环线程中的问题

Java 无限循环线程中的问题,java,Java,这是我节目的一部分 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 (Interru

这是我节目的一部分

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();
这真是太奇怪了。当我注释
try{}catch{}
的范围时,程序从不在
的范围内运行
但是如果我取消
try{}catch{}
范围内的注释,循环将成功运行,并在
范围内运行,而(true){}

这是我的问题。对不起,我的英语很差。

如果没有
wait()
(这比
sleep()
更好)您的循环将消耗所有CPU资源,因此编译器可能会禁用内容。

在您的情况下,实际原因将根据体系结构/Java编译器/JVM/设置而有所不同。

在循环时如何检测进入/未进入
?我使用
System.out.println(“get if”)但监视器从不显示。因此,如果我需要在线程中运行无限循环,如
While(true){}
,我需要添加
sleep
,对吗?正如我所说-
wait()
在本内容中优于
sleep()
。但答案是肯定的。否则,您的代码将消耗所有可用资源,并将杀死您的系统
之后,当(true)
时,循环将运行??为什么?你是说你的代码带有
System.out.println(“got”)循环内部正在运行并生成(许多)“get”输出行?在你的问题中,你说如果没有
sleep()
语句,它就不会生成输出。在那之后,我添加了
System.out.println(“get”)
,而不是
sleep
。但是它运行