今天邮件群组里面引发了有意思的争论。守护进程和守护线程。
网上一搜,发现果然非常多的人把这两个概念混淆了。
对于JAVA而言,一般一个应用程序只有一个进程——JVM。除非在代码里面另外派生或者开启了新进程。
而线程,当然是由进程开启的。当开启该线程的进程离开时,线程也就不复存在了。
所以,对于JAVA而言,线程是完全可以由自己的API自由产生。例如new Thread().但是进程就不同,必须通过调用OS的API,如Runtime.getRuntime.exec()。 所以说,进程是OS级别的概念。
守护线程和用户线程的区别:
二者其实基本上是一样的。唯一的区别在于JVM何时离开。
用户线程:当存在任何一个用户线程未离开,JVM是不会离开的。
守护线程:如果只剩下守护线程未离开,JVM是可以离开的。
在Java中,制作守护线程非常简单,直接利用.setDaemon(true)
而守护进程的产生就非常的麻烦了。具体google吧。略……