代码
“`
public void testThread(){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(“1”);
}}
).start();
Thread.yield();
System.out.println(“2”);
}
“`
Thread.yield();的作用是让当前线程让步,使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择。
说的很直白了其实。
而如果不加Thread.yield();那么“2”是会先打印的。原因就是start方法调用后在被调用(callee)的新线程上还要经过一些JVM内部的初始化动作才能跑到指定的入口方法。
so,应该是主线程执行完之后再执行已就绪的线程。