线程的优先级

线程的优先级

  线程的优先级说明在程序中该线程的重要性。系统会根据优先级决定首先使用哪个线程,但这并不意味着优先级低的线程得不到运行,只是它运行的几率比较小而已,比如垃圾回收机制。

方法setPriority("",5,threadA);

每个新的线程都继承了父线程的优先级。Thread.MIN_PRIORITY(1)---Thread.MAN_PRIORITY(10)------Thread.NORM_PRIOITY(5)优先级在1---10之间。

在多任务的操作系统中,每个线程都会得到一小段CPU时间片运行,在时间结束时,将轮换另一个线程进入运行状态,这时系统会选择与当前线程优先级相同的线程予以运行。

系统始终选择优先级较高的线程进入运行状态。

代码:

setPriority.java

package com;

public class setPriority extends Thread {

    public setPriority(String name) {
        super(name);
        // TODO Auto-generated constructor stub
    }
    @Override
    public void run() {
        System.out.println(getName());
        }
    }

}

 

App.java

package com;

import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;


public class App {

    public App() throws InterruptedException, ExecutionException {

        setPriority a = new setPriority("11111");
        setPriority b = new setPriority("22222");
        setPriority c = new setPriority("33333");
        setPriority d = new setPriority("44444");
        setPriority e = new setPriority("55555");

        a.setPriority(7); //设置优先级
        b.setPriority(1);
        c.setPriority(7);
        d.setPriority(4);
        e.setPriority(5);
        a.start();
        b.start();
        c.start();
        d.start();
        e.start();
    }
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        new App();
    }
}

运行结果:

但是吧,你的运行结果不一定和我的一样,因为这个吧每个人的电脑不一样,而且每次运行的状态也不一样。会用就好啦~~

原文地址:https://www.cnblogs.com/cattree/p/10662873.html