Thread.setDaemon()方法,从文档中我们可以发现,意思为后台线程、守护线程。一开始我对 后台线程不是太理解,觉的Thread本身就是在不影响其他操作的情况下运行的,这就是后台 线程。后来才发现,重点在于守护线程。下面来说一下,什么是守护线程:
实现守护线程的方法是在线程start()之前setDaemon(true),否则会抛出一个
IllegalThreadStateException异常。不能操作文件、数据库等资源,避免主线程关闭而未能 关闭守护线程的资源,并且它会在任何时候甚至在一个操作的中间发生中断。
Thread thread = new Thread(this);
thread.setDaemon(true);
thread.start();
1、 定义:
守护线程,也可称为服务线程,当程序中没有可服务的线程时会自动离开。因此,守护线程的 优先级比较低,用于为其他的线程等提供服务。
java中最典型的守护线程就是垃圾回收线程。当我们的应中用没有任何常规线程运行时,就 不会产生垃圾了,垃圾回收线程就无服务对象了,就会自动离开。它始终在低级别的状态中运 行,用于实时监控和管理系统中的可回收资源。
2、 生命周期:
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种 任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统 “同生共死”。那Java的守护线程是什么样子的呢。当JVM中所有的线程都是守护线程的时 候,JVM就可以退出了;如果还有一个或以上的非守护线程则JVM不会退出。
Was this helpful?
0 / 0