我是靠谱客的博主 朴实方盒,最近开发中收集的这篇文章主要介绍java设置线程优先级的误区,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对线程有一些了解的读者知道,在线程中,我们可以通过线程的setPriority()方法来设置线程的优先级,方法的参数是一个整型值,可以填写从1~10的值。当我们创建线程的时候,java默认给线程设置的优先级是5,1为最低优先级,10为最高优先级。下面的例子创建了a,b两个线程并给它们设置了优先级:

public static void main(String[] args) {
		Thread a=new Thread(new Runnable() {
			@Override
			public void run() {
				for(int i=0;i<10;i++)
				{
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println("a");
				}
				System.out.println("a线程执行完毕");
			}
		});
		Thread b=new Thread(new Runnable() {
			@Override
			public void run() {
				for(int i=0;i<10;i++)
				{
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					System.out.println("b");
				}
				System.out.println("b线程执行完毕");
			}
		});
		a.setPriority(1);
		b.setPriority(10);
		a.start();
		b.start();
	}

误区

那么,我们很容易就以为,线程的优先级是线程从cpu手里抢到资源的权重,认为优先级越高的线程越容易在线程竞争中获胜,这是初学者的一个误区。

例如,刚刚上面的代码给a线程设置了最低优先级,给b线程设置了最高优先级,按照错误的想法,a线程更容易抢到资源,那么在同一时间内打印出的a字母应该比b多,可事实结果是什么呢?
在这里插入图片描述
多实验几次,我们会发现,优先级和线程抢到资源的概率并没有关系,而是在有多个线程的时候,用来设置一上来从哪个线程开始执行的优先级的,和之后抢夺cpu的权重并无关系。

最后

以上就是朴实方盒为你收集整理的java设置线程优先级的误区的全部内容,希望文章能够帮你解决java设置线程优先级的误区所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部