线程有两种调度模型(Java 使用的是抢占式调度模型):
分时调度模型:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间片
抢占式调度模型:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些。
线程默认优先级是5。 线程优先级的范围是:1-10。10表示最高优先级,1表示最低优先级,5是普通优先级。
线程优先级高仅仅表示线程获取的 CPU 时间片的几率高,但是要在次数比较多,或者 多次运行的时候才能看到比较好的效果。
package com.shusheng.tihuzhai.test; /** * @author shusheng * @description * @Email shusheng@yiji.com * @date 2018/8/28 10:27 */ public class ThreadPriority extends Thread{ @Override public void run(){ for(int x=0;x<100;x++){ System.out.println(getName()+":"+x); } } }
package com.shusheng.tihuzhai.test; /** * @author shusheng * @description * @Email shusheng@yiji.com * @date 2018/8/27 19:10 */ public class ThreadPriorityTest { public static void main(String[] args) { ThreadPriority tp1 = new ThreadPriority(); ThreadPriority tp2 = new ThreadPriority(); ThreadPriority tp3 = new ThreadPriority(); tp1.setName("叶胖子"); tp2.setName("王瘦子"); tp3.setName("陈苗条"); tp3.setPriority(10); tp2.setPriority(1); tp3.start(); tp2.start(); tp1.start(); } }