Daemon线程
来源:互联网 发布:办公软件系统 编辑:程序博客网 时间:2024/06/14 06:45
如果要设计某个程序,除了主线程之外,还用了一个线程在后台进行相关运算工作,程序如下:
public class SimpleThread {
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
public void run() {
while(true) {
System.out.print("T");
}
}
});
thread.start();
// 主线程继续进行其他工作........
// such...such....
// 现在主线程执行到这边了,工作应该结束了
}
}
该线程已经运行到最后一个语句了,这时应该是工作结束的时候,但程序并没有终止,因为另一个线程还在运作,怎么停止它?在最后加上一行使用System.exit()?这虽然也可以,但这只是强迫程序结束,而且这个方法并不是随时可以适用。
一个Daemon线程是在后台执行服务线程,例如网络服务器侦听连接端口的服务、隐藏系统线程,如垃圾收集线程或其他JVM 建立的线程。如果所有的非Daemon的线程都结束了,则Daemon线程自动就会终止。
从Main方法开始的是一个非Daemon线程,如果您希望某个线程在产生它的线程结束后也跟着终止,那么您要将它设置为Daemon线程,范例15.5是个简单的示范。
Ü 范例15.5 DaemonThread.java
package onlyfun.caterpillar;
public class DaemonThread {
public static void main(String[] args) {
Thread thread = new Thread(
// 这是匿名类的写法
new Runnable() {
public void run() {
while(true) {
System.out.print("T");
}
}
});
// 设置为Daemon线程
thread.setDaemon(true);
thread.start();
}
}
这个程序在主线程结束之后,Daemon线程也就会跟着结束,您可以使用setDaemon()方法来设置一个线程是否为Daemon线程,范例15.5中如果没有使用setDaemon()方法设置为true,则程序会不断地打印出T字符而不终止(只能按Ctrl+C强迫中止程序);使用isDaemon()方法则可以判断该线程是否为Daemon线程。
Java默认所有从Daemon线程产生的线程也是Daemon线程,因为基本上由一个后台服务线程衍生出来的线程,也应该是为了在后台服务而产生的,所以在产生它的线程停止后,衍生线程也应该跟着停止。
- Daemon线程
- Daemon线程
- Daemon 线程
- daemon线程
- Daemon 线程
- Daemon线程
- daemon线程
- 守护线程Daemon
- 守护线程(Daemon)
- Java Daemon线程
- 慎用守护线程Daemon
- Java Daemon线程
- 守护(daemon)线程
- Java Daemon线程
- 守护线程(Daemon)
- Java的Daemon线程
- Java Daemon线程
- Java Daemon线程
- Sql Server实用操作小技巧集合
- power designer 12.5及破解补丁
- Karrigell 中文版官方文档 P03
- 快速体验Karrigell web开发
- VA_LIST的用法
- Daemon线程
- 利用.NET Directory类轻松进行目录管理
- 一个WEB漏洞扫描系统的设计与实现(一)
- 回文数问题
- 修复“资源浏览器”的浏览器栏区域呈现灰色空白问题
- 直接插入排序(稳定)
- 希尔排序(不稳定)
- Rails源代码分析(32):ActionController::Routing(3) RouteSet
- 选择排序( 稳定)