方法Thread.yield
:
使当前正在执行的线程对象暂时暂停并允许其他线程执行。
所以在下面的代码中:
public class Test implements Runnable {
private int stopValue;
public Fib(int stopValue){
this.stopValue = stopValue;
}
@Override
public void run() {
System.out.println("In test thread");
for(int i = 0; i < stopValue; i++){
c = i + 1;
}
System.out.println("Result = "+c);
}
public static void main(String[] args){
int defaultStop = 1024;
if(args.length > 0){
defaultStop = Integer.parseInt(args[0]);
}
Thread a = new Thread(new Fib(defaultStop));
System.out.println("In main");
a.setDaemon(true);
a.start();
Thread.yield();
System.out.println("Back in main");
}
}
我希望我应该看到:
In main
然后In test thread
其余的将是未定义的。但我不明白为什么有时我只看到:
In main
而Back in main
不是Test
线程中的任何打印语句?