教育路上
摘要:java后台线程多线程,这时方法会结束,main 线程也就随之结束了。java 后台 线程 多线程。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。
2022-05-19 13:38网络推荐
上面的售票案例中,当 main()方法中创建并启动四个新的线程后,main()方法中的代码
执行完毕,这时方法会结束,main 线程也就随之结束了。通过程序的运行结果可以看出,
虽然 main 线程结束了,但整个 Java 程序却没有随之结束,仍然在执行售票的代码。对 Java
程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台
线程运行。这个进程就会结束。这里提到的前台线程和后台线程是一种相对的概念,新创建
的线程默认都是前台线程,如果某个线程对象在启动之前调用 setDaemon(true)语句,这个
线程就变成个后台线程。接下来通过一个案例来演示当前程序只有后台线程时就会结束的情
况,如例 14-6 所示。
例 14-6 Example06.java
class DamonThread implements Runnable { // 创建 DamonThread 类,实现 Runnable 接口
public void run() { // 实现接口中的 run()方法
while (true) {
System.out.println(Thread.currentThread().getName()
+ "---is running.");
}
}
}
public class Example06 {
public static void main(String[] args) {
System.out.println("main 线程是后台线程吗?"+
Thread.currentThread().isDaemon());
DamonThread dt = new DamonThread(); // 创建一个 DamonThread 对象
dt
Thread t = new Thread(dt,"后台线程"); // 创建线程 t 共享 dt 资源
System.out.println("t 线程默认是后台线程吗? "+t.isDaemon()); // 判断是否为
后台线程
t.setDaemon(true); // 将线程 t 设置为后台线程
t.start(); // 调用 start()方法开启线程 t
for(int i=0;i<10;i++){
System.out.println(i);
}
}
}
运行结果如图 14-9 所示
例 14- 6 演示了一个后台线程结束的过程。当开启线程 t 后,会执行死循环中的打印语
句,但我们将线程 t 设置为后台线程后,当前台线程死亡后,JVM 会通知后台线程。由于后
台线程从接受指令,到做出响应,需要一定的时间,因此,打印了几次“后台线程—isrunning.”
语句后,后台线程也结束了。由此说明进程中只有后台线程运行时,进程就会结束。
注意:要将某个线程设置为后台线程,必须在该线程启动之前,也就是说 setDaemon() 方法必须在 start()方法之前调用,否则会引发 IllegalThreadStateException 异常。
访客的评论 2023/12/03 05:21
文中描述的是准确的吗,如何报名!