美文网首页Java
【多线程】——5.线程的优先级和守护线程

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

作者: 衰煋 | 来源:发表于2020-03-30 23:08 被阅读0次

    线程的优先级和守护线程

    线程的优先级

    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.线程的优先级和守护线程

        本文链接:https://www.haomeiwen.com/subject/latiuhtx.html