⑴ java中的守护线程 有哪些
可以用VisualVM或者jstack来查看,也可以在代码里利用Thread.getAllStackTrace()来获取所有的线程信息。
另
外,最简单的方法是:写一个最简单的java程序,里面就一个Thread.sleep(999999),然后在控制台下运行;如果是windows,按
Ctrl-Break,如果是linux,找到该java进程的id,然后执行"kill -3
id",就可以看到所有线程的mp了,里面有daemon标志的就是daemon线程。
⑵ java程序运行过程中 java虚拟机是什么时候运行的
jvm(java虚拟机)是可运行java字节码的虚拟计算机系统,我们可以把java虚拟机看成一个微型操作系统,在它上面可以执行java的字节码程序,它附着在具体操作系统之上,本身还有一套虚拟机指令,但它通常是在软件上而不是在硬件上实现,java实现一个抽象层,将底层硬件平台,操作系统与编译过的代码联系起来,java实现跨平台性,字节码具有通用的形式,只有通过java虚拟机处理后才可以转换成本机形式。自己慢慢的理解一下,我也是从学过的资料上整理的一些,相信你会明白的!
⑶ java中isdaemon是什么方法
/**
*.
*
*@return<code>true</code>ifthisthreadisadaemonthread;
*<code>false</code>otherwise.
*@see#setDaemon(boolean)
*/
publicfinalbooleanisDaemon(){
returndaemon;
}
守护线程:
判断当前线程是否为守护线程;
⑷ java中守护进程是一直都在运行吗
Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部撤离,那么Daemon Thread也就没啥线程好服务的了,所以虚拟机也就退出了。
⑸ 如何设置java守护线程守护某一个线程
守护线程与普通线程在表现上没有什么区别,我们只需要通过Thread提供的方法来设定即可:
void setDaemon(boolean )
当参数为true时该线程为守护线程。
守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。
GC就是运行在一个守护线程上的。
需要注意的是,设置线程为后台线程要在该线程启动前设置。
Thread daemonThread = new Thread();
daemonThread.setDaemon(true);
daemonThread.start();
⑹ java主线程结束和子线程结束之间的关系
你应该换成main函数运行,abcd就一定会打印出来了
问题并不是出在主线程和子线程身上,事实上Java似乎也没有严格主线程和子线程的概念,取而代之的是普通线程和后台线程
但是这里你采用@Test来运行代码,而@Test是JUnit测试框架使用的注解,JUnit在进行单元测试的时候,如果被@Test注释的方法执行完成,那么内部开启的线程也会被强制退出,退出是测试框架进行的操作
这和Java承诺的普通线程不退出程序就不结束是不相符的,如果书上告诉你会输出两个但是你执行了只输出了一个那么很可能就是这里出了问题
而通过main函数则没有框架干预,根据Java的规则只要有普通线程没有退出,程序就不会完全退出(System.exit强制自杀除外),那么除非创建的线程被设置成了后台线程(或者叫守护线程,daemon),那么才会在主线程退出时自动关闭这些后台线程,就是你遇到的偶尔可以输出abcd偶尔不行的效果,否则一定会abcd和efgh两个都输出,只不过输出顺序可能不一致
⑺ Java中User Thread和Daemon Thread的区别
首先参考java jdk api
public final void setDaemon(boolean on)
将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。
该方法必须在启动线程前调用。
令参考守护线程概念:
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。
个人理解,就是除了动态受控的主业务线程以外的用来处理一些异步或及时或资源释放等任务的,如jre的垃圾回收线程.
仅供参考,个人认为可以从这两个方面去找专业资料查询
⑻ java中幽灵线程是什么,以及它的作用和工作原理是什么
任何一个Java线程都能成为幽灵线程。它是作为运行于同一个进程内的对象
和线程的服务提供者。例如,HotJava浏览器有一个称为" 后台图片阅读器"的幽灵
线程,它为需要图片的对象和线程从文件系统或网络读入图片。
幽灵线程是应用中典型的独立线程。它为同一应用中的其他对象和线程提供
服务。幽灵线程的run()方法一般都是无限循环,等待服务请求。
⑼ java里面 daemon线程与一般线程的区别有什么运用
你好
在Java中有两类线程:用户线程
(User
Thread)、守护线程
(Daemon
Thread)。
所谓守护
线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。
用户线程和守护线程两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。
因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。
希望帮到你
⑽ daemon在java线程中 是什么意思
在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。
所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。
用户线程和守护线程两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。