重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

守护线程Java代码,守护进程和守护线程

Java用户线程和守护线程有什么区别?

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守护者。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被守护者,Daemon也就没有工作可做了,也就没有继续运行程序的必要了。 值得一提的是,守护线程并非只有虚拟机内部提供,用户在编写程序时也可以自己设置守护线程。

在临潼等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、做网站 网站设计制作定制网站建设,公司网站建设,企业网站建设,品牌网站建设,全网整合营销推广,成都外贸网站建设公司,临潼网站建设费用合理。

java题目,这道题用守护线程怎么做?

守护线程需要将指定线程的setDaemon()置为true,整体代码为:

import java.util.Random;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

System.out.println("main线程启动");

//设置main线程退出监听线程,当maim线程真正结束时,会打印该日志

Runtime.getRuntime().addShutdownHook(new Thread(() - System.out.println("main开始退出")));

//设置线程1,死循环,每3秒输出一个随机整数

Thread thread1 = new Thread(() - {

System.out.println("线程1启动");

while (true) {

Random random = new Random();

System.out.println("线程1输出随机整数:[" + random.nextInt(100) + "]");

try {

Thread.sleep(3 * 1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

});

thread1.setDaemon(true);//守护线程1

//设置线程2,监听“Q”命令,收到命令后线程2结束

Thread thread2 = new Thread(() - {

System.out.println("线程2启动");

Scanner in = new Scanner(System.in);

String command = "";

while (!"Q".equals(command)) {

System.out.println("线程2等待输入");

command = in.nextLine();

System.out.println("线程2输入:[" + command + "]");

}

System.out.println("线程2收到终止命令,线程2已结束");

});

thread1.start();

thread2.start();

System.out.println("main线程结束,等待子线程结束");

}

}

关键在于第23行:thread1.setDaemon(true);//守护线程1

我们分析一下我的这段代码,main函数启动后,会先后开始执行线程1和线程2,之后main线程结束,等待所有子线程结束后,main线程即可退出,同时关闭jvm。

我们先看一下如果线程1没有设置为守护线程会咋样,可以看到,线程1是一个死循环,它自己是永远不会主动结束的,线程2则是当输入“Q”命令后,跳出while循环,结束线程2。

运行一下没有守护线程1的情况:

运行后,线程1一直在输出整数,线程2收到“Q”命令后也结束了,但是线程1还是在输出,main线程也无法停止,jvm将一直存在下去。

现在再运行守护线程1的情况:

线程2收到“Q”命令后,线程2结束,此时由于线程1被守护,main线程开始退出,之后,jvm关闭,守护线程1被自动回收。

如何设置java守护线程守护某一个线程

守护线程与普通线程在表现上没有什么区别,我们只需要通过Thread提供的方法来设定即可:

void setDaemon(boolean )

当参数为true时该线程为守护线程。

守护线程的特点是,当进程中只剩下守护线程时,所有守护线程强制终止。

GC就是运行在一个守护线程上的。

需要注意的是,设置线程为后台线程要在该线程启动前设置。

Thread daemonThread = new Thread();

daemonThread.setDaemon(true);

daemonThread.start();

java 守护线程一致在重复执行run方法吗?

java中一个线程的run方法只能执行一次,守护线程所能执行的操作与非守护线程没有本质的区别,也不一定要全程运行,也有可能一个守护线程只是在特定情况下才start,并且很快执行完run方法,然后被销毁。守护线程与非守护线程的区别在于是否将线程的setDaemon()方法设置为true;

当一个系统进程中所有非守护线程都结束,只有守护线程时,jvm将会关闭,这个java程序就完全结束了

Java如何创建守护线程?

使用Thread类的setDaemon(true)方法可以将线程设置为守护线程,需要注意的是,需要在调用start()方法前调用这个方法,否则会抛出IllegalThreadStateException异常。

java中关于守护线程的疑问?

守护线程也叫精灵线程, 当程序只剩下 守护线程的时候 程序就会退出。

守护线程的作用 类似在后台静默执行 , 比如JVM的垃圾回收机制, 这个就是一个 守护线程。 而非守护线程则不会。


当前文章:守护线程Java代码,守护进程和守护线程
浏览路径:http://cqcxhl.com/article/hoesho.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP