首页 > 系统相关 >java守护进程

java守护进程

时间:2023-04-20 14:02:28浏览次数:43  
标签:daemon java thread 虚拟机 Non 线程 进程 threads 守护


评:

1.所谓守护线程就是运行在程序后台的线程,程序的主线程Main(比方java程序一开始启动时创建的那个线程)不会是守护线程.

2.Daemon thread在Java里面的定义是,如果虚拟机中只有Daemon thread 在运行,则虚拟机退出。
虚拟机中可能会同时有很多个线程在运行,只有当所有的非守护线程都结束的时候,虚拟机的进程才会结束,不管在运行的线程是不是main()线程。

3.Main主线程结束了(Non-daemon thread),如果此时正在运行的其他threads是daemon threads,JVM会使得这个threads停止,JVM也停下.
如果此时正在运行的其他threads有Non-daemon threads,那么必须等所有的Non daemon线程结束了,JVM才会停下来.

4.总之,必须等所有的Non-daemon线程都运行结束了,只剩下daemon的时候,JVM才会停下来,注意Main主程序是Non-daemon线程.

public class A implements Runnable{ 



public void run() 

{ 


for(;;){ 


System.out.println("hello world"); 

} 

} 

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

// TODO Auto-generated method stub 

Thread thread = new Thread(new A()); 

//thread.setDaemon(true); //设置为守护进程 

thread.start(); 

Thread.sleep(3000); 

} 

}

标签:daemon,java,thread,虚拟机,Non,线程,进程,threads,守护
From: https://blog.51cto.com/u_16080829/6209522

相关文章

  • java线程同步和异步的区别
    在Java中,同步和异步是指多线程并发执行中的两种不同的机制。同步指的是线程之间的协作方式,即当一个线程在执行一个任务时,其他线程必须等待该线程执行完该任务后才能执行同一段代码。同步机制通常使用synchronized关键字或Lock对象进行实现,以保证多线程共享的资源同步访问。 ......
  • Java多线程基础
    1、创建线程类的方法1.1、继承Thread类当一个类继承了Thread类,该类就可以当做线程使用我们会重写run方法,写上自己的业务代码run方法是Thread类实现了Runnable接口的run方法1.1.1、入门案例/***@authorCarl*@version1.0*/publicclassThread01{public......
  • java线程同步和异步的区别
    在Java中,同步和异步是指多线程并发执行中的两种不同的机制。同步指的是线程之间的协作方式,即当一个线程在执行一个任务时,其他线程必须等待该线程执行完该任务后才能执行同一段代码。同步机制通常使用synchronized关键字或Lock对象进行实现,以保证多线程共享的资源同步访问。异步指的......
  • java - 缩放新的图片
    /***缩放新的图片*/publicstaticStringscaleImg(StringwaterLogoPath,StringwaterLogoPathTmp,Stringsuffix,ImgWHwh){try{suffix=suffix.replace(".","");Filesrcfile=newFile(water......
  • java Map 怎么遍历
    评://最常规的一种遍历方法,最常规就是最常用的,虽然不复杂,但很重要,这是我们最熟悉的,就不多说了!!publicstaticvoidwork(Map<String,Student>map){Collection<Student>c=map.values();Iteratorit=c.iterator();for(;it.hasNext();){System.out.pri......
  • JAVA: 如何显示比当前DATE时间,提前一个月的时间 还有提前20天
    评:Datedate=newDate();//当前日期SimpleDate()Formatsdf=newSimpleDateFormat("yyyy/MM/dd");//格式化对象Calendarcalendar=Calendar.getInstance();//日历对象calendar.setTime(date);//设置当前日期calendar.add(Calendar.MONTH,-1);//月份减一Sy......
  • 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
    评:建立好一个Maven项目后,如果JavaResources资源文件下没有src/main/java文件夹,并且在手动创建这个文件时提示“已存在文件”。这说明,在这个项目配置中已经有了src/main/java这个文件夹,至于为什么不显示,我暂时也还不清楚,希望谁明白了跟我下,谢了。(已解决)[b]第二种方法:这是最......
  • java.lang.IllegalArgumentException: Illegal group reference
    评:在使用String的replaceFirst(regex,replacement)的时候出现java.lang.IllegalArgumentException:Illegalgroup原因是第一个参数支持正则表达式,replacement中出现“$”,会按照$1$2的分组模式进行匹配,当编译器发现“$”后跟的不是整数的时候,就会抛出“非法的组引用”的异常......
  • JavaScript 九九乘法表
    方法一:观察规律:第一个数每行都是自增1。我们发下第二个数都是从1开始,依次递增1,永远不大于前面的数。前面数字每自增一次,后面数字自增一轮。我们可以用双重for循环,外层初始值设为i,i从1开始,到9结束,自增1内层从初始值设为j,j从1开始,小于等于外层的i,自增1九九乘法表代码如下:for......
  • JavaScript将时间戳转化为时间
    consttimestampToTime=(timestamp)=>{constdate=newDate(timestamp*1000);constyear=date.getFullYear();constmonth=(date.getMonth()+1).toString().padStart(2,'0');constday=date.getDate().toString().padStart(......