此外,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(垃圾回收算法) 就是一个很称职的守护者!
创建守护线程的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著 <> 高洪岩著