JAVA基础:线程优先级和精灵线程
目录
前言
线程优先级
精灵线程
前言
线程存在的目的是为了提升代码的效率,以前的程序只有主线程自己执行是串行的,这样的代码效率低 ,多线程执行的代码是并行的,多个线程同时执行代码,这样的效率高,但是线程并不是越多越好,线程的执行需要获取CPU才能执行,而CPU的数量是有限的,并且java的线程还是抢占式的,这时就会出现一个问题,如果有一个线程要执行的代码是更重要的,我们需要让这个线程更早的执行,如果线程的优先级都一样就可能会导致这个线程一直抢不到CPU
线程优先级
我们可以给线程手动设置优先级,设置更高的优先级可以增加线程抢到CPU的几率
注意:并不是优先级更高就一定比优先级低的线性先抢到CPU,只是获得CPU的几率更大
thread.setPriority(9);
可以使用上面的方法设置线程优先级
通过源码可知,线程优先级的最小值是1,默认是5,最大是10
精灵线程
精灵线程也叫守护线程,是可以通过方法设置的
Thread thread = new Thread();
thread.setDaemon(true);
通过这个方法可以将一个线程设置为精灵线程
守护线程是用来守护主线程的,我们创造的所有线程都叫做用户线程,如果主线程执行完了自己的代码,而用户线程没有执行完毕,这时主线程就会卡住,等待用户线程执行完毕再结束程序
守护线程的作用就是如果主线程执行完毕,不管守护线程是否执行完毕,主线程都会结束程序