Runtime.getRuntime().exit(n)。
再查看Runtime.exit(int)的方法描述:
通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。此方法从不正常返回。可以将变量作为一个状态码;根据惯例,非零的状态码表示非正常终止。 虚拟机的关闭序列包含两个阶段。在第一个阶段中,会以某种未指定的顺序启动所有已注册的关闭钩子 (hook)(如果有的话),并且允许它们同时运行直至结束。在第二个阶段中,如果已启用退出终结,则运行所有未调用的终结方法。一旦完成这个阶段,虚拟机就会暂停,如果在虚拟机已开始其关闭序列后才调用此方法,那么若正在运行关闭钩子,则将无限期地阻断此方法。如果已经运行完关闭钩子,并且已启用退出终结 (on-exit finalization),那么此方法将利用给定的状态码(如果状态码是非零值)暂停虚拟机;否则将无限期地阻断虚拟机。
你编写的代码中:
System.exit(0) //表示正常终止虚拟机,将无限期地阻断虚拟机,导致虚拟机不能及时关闭。
可以将0改成任意非零数字(这里改为-1)即可将虚拟机强行关闭。改后的代码如下:复制代码
- import java.util.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import javax.swing.Timer;
- public class TimerTest {
- public static void main(String[] args) {
- TimerPrinter liPrinter = new TimerPrinter();
- Timer t = new Timer(5000, liPrinter);
- t.start();
- JOptionPane.showMessageDialog(null, "Quit Program?");
- System.exit(-1);
- }
- }
- class TimerPrinter implements ActionListener
- {
- static int it = 0;
- public void actionPerformed(ActionEvent event) {
- Date now = new Date();
- System.out.println("At the tone, the time is " + now + (it++));
- Toolkit.getDefaultToolkit().beep();
- }
- }
这样,就可以关闭虚拟机,使整个程序终止。
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |