gpt4 book ai didi

java - 守护线程未按预期工作

转载 作者:行者123 更新时间:2023-11-30 06:10:02 26 4
gpt4 key购买 nike

package main.components;

import java.io.Serializable;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

public class MainSnoozerx implements Runnable, Serializable {

private static final long serialVersionUID = 1L;
private static int min = 0;
static Thread mnz = new Thread(new MainSnoozerx());
private long convertedToMiliSec = 0l;
private Scanner scn = new Scanner(System.in);

@Override
public void run() {
// TODO Auto-generated method stub
try{
do{
System.out.println("Enter minutes to snooze..");
min = scn.nextInt();
}while(min<0);

convertedToMiliSec = TimeUnit.MINUTES.toMillis(min);
try {
Thread.sleep(convertedToMiliSec);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("Alarm Now!!!");
}catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
mnz.setDaemon(true);
mnz.start();
}

}

谁能告诉我我做错了什么/遗漏了什么?我的程序在我运行它时就终止了,甚至一次都没有打印 syso。我希望代码作为守护线程无休止地运行,而用户只需设置一次分钟,贪睡就会永远持续下去......

最佳答案

你理解错了,JVM 将在至少有一个非守护进程 线程处于 Activity 状态时继续运行。 main 线程不是守护线程,如果在主线程退出之前没有创建其他非守护线程,JVM 将退出。

如果您希望 JVM 继续运行,请移除 setDaemon 调用

关于java - 守护线程未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com