线程无限循环问题

时间:2014-05-04 11:12:09

标签: 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 (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){}范围内运行

这是我的问题。抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

如果没有wait()(这里更好地替换sleep()),您的循环将消耗所有 CPU资源,因此内容可能会被编译器禁用。
您的案例中的实际原因将取决于体系结构/ Java编译器/ JVM /设置......