java setdaemon_setDaemon()方法的使用

java setdaemon_setDaemon()方法的使用在 Java 有两种线程一个是主线程一个是守护线程 而 setDaemon 方法就是将当前线程设置为守护线程的方法 守护线程的特点就是当主线程结束时 守护线程自动终止 我们通过下面的例子演示这个效果 消息生产者 authorSama date2017 03 1316 31 since1 0 0 publicc

在Java有两种线程一个是主线程一个是守护线程。而setDaemon()方法就是将当前线程设置为守护线程的方法。守护线程的特点就是当主线程结束时,守护线程自动终止。我们通过下面的例子演示这个效果。

/

* 消息生产者

*

* @author Sama

* @author

* @date 2017-03-13 16:31

* @since 1.0.0

*/

public class MessageServer implements Runnable {

@Override

public void run() {

for (int i = 1; i <= 20; i++) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName());

}

}

}

/

* 消息消费者

*

* @author Sama

* @author

* @date 2017-03-13 16:41

* @since 1.0.0

*/

public class MessageClient {

public static void main(String[] args) throws InterruptedException {

MessageServer messageServer = new MessageServer();

Thread thread = new Thread(messageServer);

thread.setDaemon(true);

thread.start();

Thread.sleep(1000);

System.out.println(“主线程停止”);

}

}

Thread-0

主线程停止

Thread-0

我们看输出信息得知。虽然我们没有在循环中添加任何让线程停止的代码,但线程明显示没有执行完就自动停止了,这就是因为主线程停止了,所以守护线程也就没什么存在的必要了。最典型的守护线程就是Java的垃圾回收器的线程了。这里有一个需要特别注意的地方就是设置守护线程必须在线程没有开启时设置。也就是说必须要在start()方法之前设置。否则该线程不但不能设置为守护线程,Jvm还会抛出异常信息。

/

* 消息生产者

*

* @author Sama

* @author

* @date 2017-03-13 16:31

* @since 1.0.0

*/

public class MessageServer implements Runnable {

@Override

public void run() {

for (int i = 1; i <= 20; i++) {

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(String.format(“i: %s thread: %s”, i, Thread.currentThread().getName()));

}

}

}

/

* 消息消费者

*

* @author Sama

* @author

* @date 2017-03-13 16:41

* @since 1.0.0

*/

public class MessageClient {

public static void main(String[] args) throws InterruptedException {

MessageServer messageServer = new MessageServer();

Thread thread = new Thread(messageServer);

thread.start();

thread.setDaemon(true);

Thread.sleep(1000);

System.out.println(“主线程停止”);

}

}

Exception in thread “main” java.lang.IllegalThreadStateException

at java.lang.Thread.setDaemon(Thread.java:1352)

at MessageClient.main(MessageClient.java:14)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

i: 1 thread: Thread-0

i: 2 thread: Thread-0

i: 3 thread: Thread-0

i: 4 thread: Thread-0

i: 5 thread: Thread-0

i: 6 thread: Thread-0

i: 7 thread: Thread-0

i: 8 thread: Thread-0

i: 9 thread: Thread-0

i: 10 thread: Thread-0

i: 11 thread: Thread-0

i: 12 thread: Thread-0

i: 13 thread: Thread-0

i: 14 thread: Thread-0

i: 15 thread: Thread-0

i: 16 thread: Thread-0

i: 17 thread: Thread-0

i: 18 thread: Thread-0

i: 19 thread: Thread-0

i: 20 thread: Thread-0

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219696.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午10:06
下一篇 2026年3月17日 下午10:06


相关推荐

  • QListWidget常用方法

    QListWidget常用方法本文转载自:http://blog.csdn.net/xgbing/article/details/7768226 QListWidget类也是GUI中常用的类,它从QListView下派生:[cpp] viewplaincopyclass Q_GUI_EXPORT QListWidget : public QListView

    2022年5月3日
    50
  • 时钟模块ds1302的使用软件_ds1302时钟程序详解

    时钟模块ds1302的使用软件_ds1302时钟程序详解  刚刚学习了如何使用ds1302这个时钟芯片的使用,现在我把学习的过程分享出来,虽然整体的过程感觉不算难,但是仍然有难解之处至今未明,因为没有去实际验证,所以也不能确定到底是什么原因。  1.首先,查找ds1302手册,可以在21ic这个网站上下载。如果嫌英文版的自己翻译的很难受(这里还是建议大家硬着头皮看英文版的,毕竟是有好处的,你说呢?),可以在网上找中文版的。  2.通过手册…

    2025年7月1日
    4
  • 水仙花数的判断(JAVA)

    水仙花数的判断(JAVA)水仙花数 JAVA 水仙花数的判断 JAVA 水仙花数的判断 JAVA 用户输入一个数 判断是否是 水仙花数 所谓 水仙花数 是指一个三位数 其各位数字立方和等于该数本身 题目分析水仙花数是一个三位数 将用户输入的三位数拆分成为单独的个位 十位 百位 对三个数字分别进行三次方运算 然后对运算后的三个数进行求和 如果运算得到的结果与用户输入的三位数相等 则说明该数为水仙花数 如果不等则说明不是 代码分析键盘输入需要用到 Scanner Scanner 是 JDK 中封装的一个类 该类的职责

    2026年3月19日
    2
  • xcode7中使用cocos2d-x3.8的webview控件

    xcode7中使用cocos2d-x3.8的webview控件

    2021年9月9日
    66
  • javascript操作html元素CSS属性

    javascript操作html元素CSS属性

    2021年12月8日
    48
  • 电力电缆2021年考试题库

    电力电缆2021年考试题库1.不允许带电移动10kV电缆。()×2.直埋电缆的敷设方式适合于电缆根数多的区域。()×3.中性点不接地电力系统发生单相接地时,健全相对地电压升高。()√4.中性点直接接地电力系统发生单相接地时,线电压不变。()×5.电缆敷设过程中应控制侧压力,高压和超高压电缆允许的侧压力一般为()。CA.1kN/mB.2kN/mC.3kN/m6.在交流电压下,随电压作用时间增加,绝缘层击穿场强()。BA.不变B.下降C.上升7.组织电缆线路工程预验收的单位是运行单位。(.

    2022年5月7日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号