public class MyThread extends Thread{
public void run(){
System.out.println("1");
}
public static void main(String[] args){
MyThread mt = new MyThread();
mt.start();
//System.out.println("Now "+Thread.currentThread().getName());
Thread.currentThread().yield();
System.out.println("2");
}
}
概括一下代码就是线程输出1,主线程输出2
直接上代码图,在屏蔽掉那段Now 的输出文本后,输出结果是
2
1
进程已结束,退出代码为 0
也就是说,一开始cpu执行主线程的时候,我让主线程执行yield方法回到可运行状态,他再一次获得了执行的机会,请问是主线程优先级非常高吗?
//////////////////////////////////////////////////////////////////
可是在加上那段之前被屏蔽的代码时,输出结果就变成了这样
1
Now main
2
进程已结束,退出代码为 0
也就是说在加上一行System.out.println之后,主线程的优先级就被降低了?我居然可以用field使得主线程让出CPU并且被实例出来的线程占领了?为什么仅仅一个System.out.println就可以改变优先级呢?很不理解,希望能清晰地帮我讲清楚,谢谢!