更新时间:2022-10-11 来源:黑马程序员 浏览量:
在之前我们讲解过,程序中的多个线程是并发执行的,某个线程若想被执行必须要得到CPU的使用权。Java虚拟机会按照特定的机制为程序中的每个线程分配CPU的使用权,这种机制称为线程的调度。
在计算机中,线程调度有两种模型,分别是分时调度模型和抢占式调度模型。分时调度模型,是指让所有的线程轮流获得CPU的使用权,并且平均分配每个线程占用CPU的时间片。抢占式调度模型,是指让可运行池中优先级高的线程优先占用CPU,而对于优先级相同的线程,随机选择一个线程使其占用CPU,当它失去了CPU的使用权后,再随机选择其他线程获取CPU使用权。Java虚拟机默认采用抢占式调度模型,通常情况下程序员不需要去关心它,但在某些特定的需求下需要改变这种模式,由程序自己来控制CPU的调度。
在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的线程获得CPU执行的机会越大,而优先级越低的线程获得CPU执行的机会越小。线程的优先级用1~10的整数来表示,数字越大优先级越高。除了可以直接使用数字表示线程的优先级外,还可以使用Thread类中提供的3个静态常量表示线程的优先级,如下所示。
1.static int MAX_PRIORITY:表示线程的最高优先级,值为10。
2.static int MIN_PRIORITY:表示线程的最低优先级,值为1。
3.static int NORM_PRIORITY:表示线程的普通优先级,值为5。
程序在运行期间,处于就绪状态的每个线程都有自己的优先级,例如,main线程具有普通优先级。然而线程优先级不是固定不变的,可以通过Thread类的setPriority(int newPriority)方法进行设置,setPriority()方法中的参数newPriority接收的是1~10的整数或者Thread类的3个静态常量。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19