Java多线程——线程优先级与守护线程(Daemon Thread)
2018-08-03 12:02
190 查看
一、线程优先级
每个线程都可以通过thread.setPriority()实现进程优先级的设置。可设置的范围在1-10之间,如果超过此范围将抛出异常throw new IllegalArgumentException()。每个线程的默认优先级为5。
tips:即使将某个线程的优先级高于另一个线程的优先级,并不意味着这个线程每次都能获得cpu资源,只是有比较大的可能性占用cpu资源。所以即使一个线程等级是10级,一个是1级,在执行操作时还是有可能会出现交替执行的现象。
二、守护线程
线程分类为:用户线程(User Thread)、守护线程(Daemon Thread)
守护线程不是程序中不可或缺的部分,当所有的非守护线程结束时,程序也将随之终止,同时杀死进程中的所有守护线程。反之而言,只要任何非守护线程还在运行,程序就不会终止。
实现方法:调用Thread对象的setDaemon(true)方法来实现。
Tips:
(1)thread.setDaemono(true)必须在thread.start()之前设置,否则会抛出一个IllegalThreadStateException异常,不能将正在运行的常规线程设置为守护线程。
(2)在Daemon线程中产生的新线程也是Daemon的。
(3)守护线程应该永远不去访问固有资源,如文件,数据库,因为他会在任何时候甚至一个操作的中间发生中断。
例子:垃圾回收线程,当程序中不再有任何运行的线程时,程序就不会产生垃圾,所有也不需要垃圾回收线程。
阅读更多相关文章推荐
- Java多线程 小知识 守护线程(后台线程)setDaemon、join方法、优先级、yield方法
- Java 多线程之 - 守护线程 java.lang.Thread.isDaemon()方法
- [疯狂Java]多线程:线程控制(join、daemon、sleep、yield、优先级)
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- JAVA - 守护线程(Daemon Thread)
- java多线程之守护线程Daemon()和Join()介绍
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- Java多线程(十)——线程优先级和守护线程
- java开发之线程(守护线程daemon和用户线程User Thread)
- Java有两种线程分别是用户线程(UserThread)和守护线程(DaemonThread)
- Java多线程系列--“基础篇”10之 线程优先级和守护线程
- JAVA并发编程——守护线程(Daemon Thread)
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- [Java] DaemonThread(守护线程)简介---finally内的代码不一定会被执行
- java 多线程系列基础篇(十)之线程优先级和守护线程
- 玩转java多线程学习篇五 线程的优先级和守护线程
- JAVA之旅(十五)——多线程的生产者和消费者,停止线程,守护线程,线程的优先级,setPriority设置优先级,yield临时停止
- java的调度、优先级setPriority、yield、jion和守护线程setDaemon
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步