概述
万事离不开方法,世界离不开秩序。Java线程的执行也是有一个顺序的,也就是优先级。CPU会根据线程的优先级合理分配资源而不会产生冲突。
线程的优先级
在java语言中,线程优先级一共有10级,优先级较高的线程会被优先执行,当执行完毕,才会轮到优先级较低的线程执行。如果优先级相同,那么就按照提交顺序(也就是代码编写顺序)执行的方式。
优先级的使用
设置优先级的方法:setPriority(int newPriority)
获取优先级的方法:getPriority()
线程优先级的特点
- 线程优先级的继承特性:也就是如果线程A启动线程B,那么线程A和B的优先级是一样的;
- 线程优先级的规则性:即线程会优先级的大小顺序执行,但是不一定是优先级较大的先执行完,因为线程的优先级还有下面第三个特性:
- 线程优先级的随机特性;
接下来我们来看一个例子:
public class TheadPri {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=10;i++){
thread1 th1 =new thread1("+","4");
th1.setPriority(4);
thread1 th2 =new thread1("-","6");
th2.setPriority(6);
thread3 th3 =new thread3("÷","10");
/*可以这样设置线程优先级别为10
* th3.setPriority(10);
* 还可以用下面的方法操作
*/
th3.setPriority(Thread.MAX_PRIORITY);
th1.start();
th2.start();
th3.start();
}
}
}
class thread1 extends Thread{
String name;
String Priority;
thread1(String name,String Priority){
this.name=name;
this.Priority=Priority;
}
public void run() {
// TODO Auto-generated method stub
System.out.println(name+"优先级是"+Priority);
}
}
class thread2 extends Thread{
String name;
String Priority;
thread2(String name,String Priority){
this.name=name;
this.Priority=Priority;
}
public void run() {
// TODO Auto-generated method stub
System.out.println(name+"优先级是"+Priority);
}
}
class thread3 extends Thread{
String name;
String Priority;
thread3(String name,String Priority){
this.name=name;
this.Priority=Priority;
}
public void run() {
// TODO Auto-generated method stub
System.out.println(name+"优先级是"+Priority);
}
}
代码多次运行之后会发现,大部分情况下运行结果满足线程的特点2,线程3都是先执行完,线程2第二执行完,线程1最后执行完(注意这里执行完不是线程1要等线程2和线程3执行完后再执行)
还有就是线程优先级的随机性,所以线程有时候并不是按照预先设置好的优先级执行。
参考文献1
最后
以上就是犹豫龙猫为你收集整理的Java线程的优先级的全部内容,希望文章能够帮你解决Java线程的优先级所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复