Advertisement

Java并发编程73道题及解析

阅读量:

1、在java中守护线程和本地线程区别?

java中的线程分为两种:守护线程(Daemon)和用户线程(User)。

每个操作均可指定主线进程或从属性进程,并通过 Thread.setDaemon(bool on)的方法来指定:当bool参数为true时,则将当前 thread 设为主导 thread;反之,则将其设为普通 thread(non-daemon)。为了正确使用 Thread.setDaemon()功能,在调用 Thread.start()`之前必须先调用 Thread.setDaemon()方法(即Set Daemon`),否则这会导致运行时错误并抛出异常。

两者的区别在于判断虚拟机(JVM)何时离开的问题上。 Daemon负责为其他进程提供服务功能,在所有User Thread均退出后状况下(此时 Daemon没有可处理的任务),虚拟机会离开。另外一种理解方式是守护进程由Java虚拟机自动生成(但并非所有情况都适用),而这些进程由应用程序初始化(如GC进程)。例如,在GC进程存在时(即作为关键组件存在),它会一直负责清理内存中的对象直至无法继续工作为止。当GC进程成为唯一存活的任务时(即当它无任务可执行),则Java虚拟机会终止运行

扩展部分包括Thread Dump程序输出的线程相关信息。其中包含具有daemon标识符的线程即是维护

全部评论 (0)

还没有任何评论哟~