概述
常用的优先级
一般来说,优先级的范围为1-10,但在个别的操作系统上有所不同。
优先级高的线程,在运行的时候将会获得更多的运行机会。
代码
package cn.hanquan.test;
import java.io.FileNotFoundException;
/*
* 优先级高的线程 获得更多的运行机会
*/
public class TestP {
public static void main(String[] args) throws InterruptedException, FileNotFoundException {
// 我的线程类
MyP mp = new MyP();
// 建立线程数组
Thread t1 = new Thread(mp);
Thread t2 = new Thread(mp);
t1.setPriority(1);
t2.setPriority(10);
t1.start();
t2.start();
}
}
class MyP implements Runnable {
@Override
public void run() {
Thread.yield();
for (int i = 0; i < 100; i++) {
System.out.println(
Thread.currentThread().getName() + " --> Priority " + Thread.currentThread().getPriority());
}
}
}
运行结果
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-1 --> Priority 10
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
Thread-0 --> Priority 1
附:之前错误的理解,留着没删,是因为里面有建立线程数组的方式,可能会用到。
错误之处在于:线程的优先级体现在获得运行的概率上,而不是体现在开始运行的顺序上。
package cn.hanquan.test;
import java.io.FileNotFoundException;
/*
* 线程优先级的是 优先级高的先运行的概率大
*/
public class TestP {
public static void main(String[] args) throws InterruptedException, FileNotFoundException {
// 我的线程类
MyP mp = new MyP();
// 建立线程数组
Thread[] t = new Thread[100];
// 设定线程优先级
for (int i = 0; i < 50; i++) {
t[i] = new Thread(mp);
t[i].setPriority(1);// MIN_PRIORITY
}
for (int i = 50; i < 100; i++) {
t[i] = new Thread(mp);
t[i].setPriority(10);// MAX_PRIORITY
}
// 开启线程 这里开启的顺序对实际线程的开始顺序也有一定的影响
// sxt300级中没有使用数组 好像就没有这种影响?
for (int i = 0; i < 100; i++) {
t[i].start();
}
}
}
class MyP implements Runnable {
@Override
public void run() {
Thread.yield();
System.out.println(Thread.currentThread().getName() + " --> Priority " + Thread.currentThread().getPriority());
}
}
运行结果
运行结果并没有完全符合预期
但是如果把30行的递增序改为递减序,几乎每一次都是优先级为10的线程先运行,优先级为1的线程后运行,这样大概可以说明线程优先级对于运行顺序的的影响。
最后
以上就是高兴云朵为你收集整理的【Java多线程】线程优先级:优先级高,执行机会多的全部内容,希望文章能够帮你解决【Java多线程】线程优先级:优先级高,执行机会多所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复