【多线程】——5.线程的优先级和守护线程

线程的优先级和守护线程


线程的优先级

java中线程的优先级范围是1-10,默认优先级是5 ,1最低10最高

高优先级线程会尽量优先于低优先级线程去执行,只是尽量做到,更不能保证高优先级线程一定在低优先级线程执行完成前完成,是不能保证的。


线程优先级的特性

具有继承性:

线程A启动线程B,A,B具有相同优先级


规则性:

CPU尽量把处理资源优先给高优先级的线程先用,但是不一定优先级大的线程先执行完。


线程优先级的随机性:

即使设置了两个优先级差距很大的两个线程,也无法保证执行先后,线程运行具有随机性。并不能保证执行先后顺序。


两种线程

1:用户线程

执行用户级的任务

2:守护线程

后台线程,一般执行后台任务。

用idDaemon()方法来区别,如果返回false,则是用户线程,否则是守护线程

java虚拟机在用户线程都结束后,会退出

GC线程就是个守护线程

守护线程:

守护线程是指在程序运行的时候在后台提供一种通用服务的线程。

守护线程并不属于程序中不可或缺的一部分,如垃圾回收线程。

当所有用户线程结束后时,程序也就终止了,同时会杀死进程中的所有守护线程。

用户线程VS守护线程

如果用户线程已经全部退出运行了,虚拟机也就退出了

如果没有被守护者了,守护线程也就没有工作可做了,也没有必要留下来了。

守护线程

并不是jvm虚拟机内部特有的

Thread.setDaemon()可以设置守护线程,但是一定要在线程跑起来之前设置,否则没有作用,反而会抛出IllegalThreadStateException异常

守护线程创建的子线程也是守护线程

总结

线程有优先级之分,优先级从1到10,默认优先级5

优先级高的线程尽量比优先级低的线程先运行

线程优先级特性:继承性,规则性,随机性

Java中线程分两种,用户线程和守护线程

守护线程在jvm线程中所有用户线程结束后退出

用户可以手动创建守护线程

你可能感兴趣的:(【多线程】——5.线程的优先级和守护线程)