线程可以设置为守护线程,ThreadGroup 也可以设置为守护 ThreadGroup,但是若将一个 ThreadGroup 设置为 deamon,也并不会影响线程的 daemon 属性,如果一个 ThreadGroup 的 daemon 被设置为 true,那么在 group 中没有任何 active 线程的时候,该 group 将自动 destroy。
package concurrent.threadgroup;
import java.util.concurrent.TimeUnit;
public class ThreadGroupDaemon {
public static void main(String[] args) {
ThreadGroup group1 = new ThreadGroup("Group1");
new Thread(group1, () -> {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "group1-thread1").start();
ThreadGroup group2 = new ThreadGroup("Group2");
new Thread(group2, () -> {
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}, "group2-thread1").start();
group2.setDaemon(true);
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(group1.isDestroyed());
System.out.println(group2.isDestroyed());
}
}
false
true
第二 group 的 daemon 被设置为 true,当其中没有 active 线程的时候,该 group 将会自动被 destroy,而第一个 group 则相反。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/chengqiuming/article/details/123750426
内容来源于网络,如有侵权,请联系作者删除!