多线程二 基本技能 (3)

此外,jdk中线程的优先级有是个,但是和操作系统都不能映射的很好,比如Windows系统是七个优先级,所以一般我们使用的是 MAX_PRIORITY NORM_PRIORITY MIN_PRIORITY

设置优先级

setPriority(int newPriority);

其中newPriority的值由1-10 ,若不在这个范围内,抛出IllegalArgumentExeception()

获取优先级

getPriority();

特性:

继承性: 若A线程启动了B线程,那么B线程的优先级和A相同

规则性: 当线程的优先级差距太大时,谁先执行完,和代码的先后顺序无关

随机性: 虽然线程优先级高的有更大的几率优先执行完run()里面的任务,但是这是不能百分百保证的

守护线程(daemon)

设置为守护线程, 它肯定会随着主线程的退而退出
java线程中有两类,一类是用户线程(非守护线程) 一类是守护线程. 它的特性就是 伴随,去守护用户线程,
比如 java的GC(垃圾回收算法) 就是一个很称职的守护者!

setDaemon(true);

创建守护线程的ThreadFactory

public class demo02 implements ThreadFactory { @Override public Thread newThread(Runnable r) { Thread thread = newThread(r); thread.setDaemon(true); return thread; } }

定制拥有守护线程的线程池

ExecutorService executorService = Executors.newCachedThreadPool(new demo02());

守护线程中的finally块

当再没有非守护线程后,守护线程中run方法中的finally代码块是不会执行而直接退出

参考书籍<>Bruce Eckel著 <> 高洪岩著

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsgpj.html