多线程yield:主动释放cpu执行权
- 多线程yield会让线程从运行状态进入到就绪状态,让后调度执行其他线程。
- 具体的实现依赖于底层操作系统的任务调度器
使用方法:
public Thread02(String name) {
super(name);
}
@Override
public void run() {
for (int i=0;i<=10;i++){
if(i==5){
System.out.println(Thread.currentThread().getName()+",释放cpu执行权");
yield();
}
System.out.println(Thread.currentThread().getName()+i);
}
}
public static void main(String[] args) {
new Thread02("firstThread").start();
new Thread02("secondThread").start();
}
结果:
firstThread0
firstThread1
firstThread2
firstThread3
firstThread4
firstThread,释放cpu执行权
secondThread0
secondThread1
secondThread2
secondThread3
secondThread4
secondThread,释放cpu执行权
firstThread5
多线程优先级:
- 在java语言中,每个线程都有一个优先级,当线程调控器有机会选择新的线程时,线程的优先级越高越有可能先被选择执行,注意:Oracle为Linux提供的java虚拟机中,线程的优先级被忽略,所有线程具有相同的优先级。所以,不能过度依赖优先级。
- 线程的优先级用数字来表示,默认范围是1到10,即ThreadMIN PRIORITY到 ThreadMAX PRIORTY一个线程的默认优先级是5,即ThreadNORM PRIORTY
- 如果cpu非常繁忙时,优先级越高的线程获得更多的时间片,但是cpu空闲时,设置优先级几乎没有任何作用。
版权声明:本文为weixin_43522117原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。