0

当下面的代码运行时,它启动线程 r,因为它的输出被接收到,但测试短语永远不会输出,尽管没有输出表明错误的错误。为什么这无法通过线程启动?它会在继续之前等待线程停止吗?

while(x<y){
    Runnable r = new Rule1(2, 0);
    new Thread(r).start();
    System.out.println("value of x is: " + x);
    x++;
}

我已经修改了 rule1 方法,以便更快地完成。完成后,“x 的值是”字符串将写入控制台。这意味着我的主要方法正在等待线程的完成。我认为通过启动一个线程,它将单独运行,从而允许主线程和新线程同时运行。我在这个假设上错了吗?这是 rule1 的代码示例

    public class Rule1 implements Runnable {

 public Rule1(int z, int q){

        //do stuff

        }

        public void run(){
        }
}
4

2 回答 2

1

可能是条件 x < y 不正确,因此不会执行 while

于 2010-10-21T17:40:02.313 回答
0

Î 无法重现您所描述的行为;编码

public static void main(String[] args) throws Exception {
    int y = 10;
    int x = 0;
    while(x<y){
        Runnable r = new Runnable() {
            @Override
            public void run() {
                for (;;) {

                }
            }
        };
        new Thread(r).start();
        System.out.println("value of x is: " + x);
        x++;
    }
}

产生输出

value of x is: 0
value of x is: 1
value of x is: 2
value of x is: 3
value of x is: 4
value of x is: 5
value of x is: 6
value of x is: 7
value of x is: 8
value of x is: 9
于 2010-10-21T17:24:22.333 回答