java timer 不起作用_java – 如果我们不生成窗口,为什么Timer不起作用?

这是代码:

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFrame;

import javax.swing.Timer;

public class TimerSample {

public static void main(String args[]) {

new JFrame().setVisible(true);

ActionListener actionListener = new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

System.out.println("Hello World Timer");

}

};

Timer timer = new Timer(500, actionListener);

timer.start();

}

}

它会生成一个窗口,然后在终端(命令提示符)中定期打印“Hello World Timer”.如果我评论这一行新的JFrame().setVisible(true);应用程序不会在命令行中打印任何内容.为什么?

添加:

我不确定我是否正确理解答案.据我所知,计时器启动一个新线程.并且这个新线程与“主”线程同时存在.当“主”线程完成时(当一切都完成并且没有任何事情可做)时,整个应用程序终止(与定时器创建的“新”线程一起).是正确的?

增加2:

上述说明仍然没有解释所有内容.例如,如果我评论新的JFrame(),程序就可以工作.setVisible(true);并把try {Thread.sleep(20000);} catch(InterruptedException e){};在timer.start()之后.所以,我有点理解.使用sleep,我们保持“main”线程忙,这样定时器创建的线程就可以存在.但是新的JFrame().setVisible(true);不要占据“主力”.据我所知,它创建了自己的线程(如Timer).那么,为什么JFrame的线程可以在没有主线程和定时器线程的情况下存在呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值