"Daemon thread"是为提供普通服务在后台运行,跟寄主程序同样生命的,却不属于寄主程序的一个线程。寄主程序(non-daemon thread)一但终止,整个程序也就结束了,即使"Daemon thread"还没有运行到结尾.也就是说non-daemon thread终止,daemon thread也终止。
下面例子是引用自tij4的:
引用
package org.iteye.bbjava.concurrency.daemon;
import java.util.concurrent.TimeUnit;
public class SimpleDaemons implements Runnable {
@Override
public void run() {
try {
while (true) {
TimeUnit.MICROSECONDS.sleep(100);
System.out.println(Thread.currentThread() + " " + this);
}
} catch (InterruptedException e) {
System.out.println("sleep interrupted!");
}
}
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 10; i++) {
Thread daemon = new Thread(new SimpleDaemons());
daemon.setDaemon(true);
daemon.start();
}
System.out.println("All daemon started!");
TimeUnit.MILLISECONDS.sleep(175);
}
}
分享到:
相关推荐
java中有两种类型的thread,user threads 和 daemon threads。 User threads是高优先级的thread,JVM将会等待所有的User Threads运行完毕之后才会结束运行。 daemon threads是低优先级的thread,它的作用是为User ...
7. **守护线程(Daemon Threads)**:守护线程不会阻止程序的退出,通常用于后台服务,如垃圾回收。通过调用`setDaemon(true)`方法可以将线程设置为守护线程。 8. **线程池**:Java的`ExecutorService`和`...
其中一个重要特性就是支持守护线程(daemon threads)。守护线程是一种特殊的线程,它的生命周期与主线程紧密关联:只有当所有非守护线程结束后,主线程才会退出。因此,如果希望某个线程在主线程退出后仍能继续运行...
这些示例可能涵盖了各种场景,如生产者消费者模型、线程间的协作(通过信号量Semaphore)、线程优先级、守护线程(daemon threads)以及线程中断的处理。通过分析这些示例,我们可以更好地理解Java线程在实际开发中...
同步机制(synchronized关键字、Lock接口及其实现如ReentrantLock),线程间的通信(wait()、notify()、notifyAll()方法以及BlockingQueue),线程优先级,守护线程(daemon threads)等。线程的生命周期描述了一个...
通过使用守护线程(daemon threads)和线程组,可以更好地管理和控制线程的生命周期。此外,synchronized关键字用于同步访问共享资源,防止数据不一致。 2. **集合框架**:Java集合框架是处理对象集合的一系列接口...
5. **守护线程(Daemon Threads)**:可选特性,线程池中的线程可以设置为守护线程,这意味着如果线程池中只有守护线程在运行,JVM会自动退出。 在Java中,`java.util.concurrent`包提供了线程池的实现,最常用的是...
- **守护线程**(Daemon Threads)与用户线程相对,它们在后台运行,只有当所有非守护线程结束后,JVM才会终止守护线程。例如,垃圾回收器就是典型的守护线程。 2. **类锁与对象锁** - **类锁**是基于类的静态...
在JVM的设计中,守护线程(daemon threads)扮演了特殊的角色。这些线程在后台运行,执行一些辅助任务,比如垃圾回收和其它系统维护任务,而不会阻止虚拟机的退出。守护线程与非守护线程(user threads)不同,后者...
此外,文档可能还讲解了守护线程(daemon threads)和用户线程的区别,以及如何设置线程的优先级。 `Thread的调用.txt`文件可能详细阐述了如何实例化并启动一个线程。在Java中,有两种方式创建线程:直接继承`...
高级的Java并发编程话题可能涵盖线程局部存储(`ThreadLocal`),守护线程(daemon threads),以及Java内存模型(JMM)如何确保线程间的可见性与一致性。面试者需要理解 `join()`, `interrupt()`, `isAlive()` 等...
在JVM中存在两种类型的线程:守护线程(Daemon Threads)和用户线程(User Threads)。守护线程是由JVM自身创建或由用户标记为守护线程的线程,它们主要为非守护线程提供服务。如果所有非守护线程都结束运行,那么...
Java中的守护线程(Daemon Threads)是用于支持应用程序运行的重要组件,它们在后台执行任务,不会阻止Java虚拟机(JVM)的退出。守护线程的主要任务是为其他非守护线程提供服务,例如垃圾回收线程就是典型的守护...
Java线程还有守护线程(daemon threads)的概念,守护线程不会阻止Java虚拟机的退出,只有当所有非守护线程结束时,Java虚拟机才会停止运行。默认情况下,由主线程创建的线程是非守护线程。 Java线程的生命周期包括...
这个压缩包中的源代码示例可能涵盖这些概念以及其他高级主题,如线程池、线程局部存储(thread_local)、守护线程(daemon threads)等。通过学习和实践这些例子,你可以深入理解C++的线程编程,并能够编写出更高效...
在 Java 中,有两种主要的线程模型:守护线程(Daemon Threads)和用户线程(User Threads)。守护线程主要用于服务用户线程,而用户线程是程序执行的主要部分,当所有用户线程结束时,程序会终止。在 Swing 中,EDT...
此外,还讨论了守护线程(Daemon Threads)和线程优先级等概念。 第二章“Java线程详解”(Thread_Ch02_JavaThread_ok.pdf)深入探讨了Java平台下的线程机制,包括线程间的通信和协作,如wait()、notify()和...
6. **守护线程(Daemon Threads)**: 守护线程是一种特殊的线程,当所有非守护线程结束时,程序会自动退出,即使还有守护线程正在运行。使用`setDaemon(true)`方法可以将线程设置为守护线程。 7. **线程池**: ...
- 超级线程(daemon threads)不影响程序的退出。 9. **序列化**: - 可串行化的类需实现`Serializable`接口,但静态变量不受影响。 - 私有数据权限不会阻止默认的序列化机制,除非使用`transient`关键字标记。 ...
10. 守护线程(Daemon Threads):守护线程不阻止JVM的退出,常用于后台服务,如垃圾收集器。 在"ThreadSample"这个练习中,你可能会涉及到以上提到的一些或全部知识点,通过实际编程来加深理解,例如创建和管理...