您的位置:首页 > 编程语言 > Java开发

java多线程----关于join方法的注意点,以及守护线程的小结

2017-08-07 13:25 633 查看
关于join方法:join方法一定要在start后,也就是先线程就绪,后加入,否则无效。请注意,join方法仅仅是让两个线程同步执行,仍然是两个线程,不是合并成一个。



Java守护线程

1、什么是守护线程(Daemon线程)?

守护线程是一个后台运行的线程,与之对比的是用户线程(User线程)。它从属于创建它的线程,因此当创建守护的线程结束时,守护线程也随之消亡。(但守护进程若有自己的消亡逻辑,可以在被守护进程之前消亡)当正在运行的线程都是守护线程时,Java 虚拟机退出

2、如何创建守护线程?

创建一个新线程,用setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前(即start()之前)调用,当线程正在运行时调用会产生异常。 isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程(且守护同一个用户线程),用户线程同样。

3、守护线程的用处?

守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。

守护线程一般是为用户线程服务的。

4、守护线程与用户线程的区别.

用户线程拥有自己的生命周期,不依赖于创建它的线程。在创建它的线程结束后用户线程仍能继续运行。运行有限的一段时间的线程一般来说是用户线程。

守护线程在创建的线程结束时消亡。无限运行的线程通常应该定义成守护线程,只是因为需要一种结束它们的方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐