多线程优先级与yield的使用

  • Post author:
  • Post category:其他


多线程yield:主动释放cpu执行权

  1. 多线程yield会让线程从运行状态进入到就绪状态,让后调度执行其他线程。
  2. 具体的实现依赖于底层操作系统的任务调度器

使用方法:

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

多线程优先级:

  1. 在java语言中,每个线程都有一个优先级,当线程调控器有机会选择新的线程时,线程的优先级越高越有可能先被选择执行,注意:Oracle为Linux提供的java虚拟机中,线程的优先级被忽略,所有线程具有相同的优先级。所以,不能过度依赖优先级。
  2. 线程的优先级用数字来表示,默认范围是1到10,即ThreadMIN PRIORITY到 ThreadMAX PRIORTY一个线程的默认优先级是5,即ThreadNORM PRIORTY
  3. 如果cpu非常繁忙时,优先级越高的线程获得更多的时间片,但是cpu空闲时,设置优先级几乎没有任何作用。



版权声明:本文为weixin_43522117原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。