当运行以下代码时,它会启动线程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(){
}
}
答案 0 :(得分:1)
可能是条件x&lt; y不是真的,所以虽然没有执行
答案 1 :(得分: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