java 中守护线程和本地线程区别
1、java 线程分两种1)守护线程(Daemon)2)用户线程(User)2、线程设置任何线程都可设置为守护线程和用户线程。方法: Thread.setDaemon(boolean);true 则把该线程 设置为守护线程,false 则为用户线程。说明:Thread.setDaemon(boolean) 须在 Thread.start()之前调用,否则运行时会抛出异常。3、两者的区别唯一区别:判
1、java 线程分两种
1)守护线程(Daemon)
2)用户线程(User)
2、线程设置
任何线程都可设置为守护线程和用户线程。
方法: Thread.setDaemon(boolean);true 则把该线程 设置为守护线程,false 则为用户线程。
说明:Thread.setDaemon(boolean) 须在 Thread.start()之前调用,否则运行时会抛出异常。
3、两者的区别
唯一区别:判断虚拟机(JVM)何时离开,Daemon Thread 是为其他线程提供服务的,若全部的 User Thread 已经撤离,Daemon 没有可服务的线程,JVM 撤离。
换一种理解方式:守护线程是 JVM 自动创建的线程(但不一定),用户线程是程序创建的线程;比如 JVM 的 垃圾回收线程是一个守护线程,当所有线程已经撤离, 不再产生垃圾,守护线程自然就无事可干了,当垃圾回收线程是 Java 虚拟机上仅剩的线程时,Java 虚拟机会自动离开。
扩展:
Thread Dump (jstack命令)打印出来的线程信息,含有 daemon 字样的线程即为守护进程,可能会有:服务守护进程、编译守护进程、windows 下的监听Ctrl+break 的守护进程、Finalizer 守护进程、 引用处理守护进程、GC 守护进程。
更多推荐
所有评论(0)