Java - 如何设置电脑必须进行操作的时间?

时间:2015-01-29 16:19:53

标签: java timer runtime freeze shutdown

我正在做一个程序,可以在选定的时间关闭(或让你的睡眠)你的电脑。

目前我使用“野蛮”的方式来做这件事,我使用了一个控制连续时间的cicle,如果小时和分钟与所选值相同,则操作开始,否则, cicle继续。

private void btn_SetActionPerformed(java.awt.event.ActionEvent evt) {                                        
    hour_Decided = Integer.parseInt((String) cmb_Hours.getSelectedItem());
    minutes_Decided = Integer.parseInt((String) cmb_Minutes.getSelectedItem());
    int current_Hours = 0;
    int current_Minutes = 0;
    boolean ok = false;
    do {
        Calendar calendar = Calendar.getInstance();
        current_Hours = calendar.get(Calendar.HOUR_OF_DAY);
        current_Minutes = calendar.get(Calendar.MINUTE);

        if (current_Hours == hour_Decided && current_Minutes == minutes_Decided) {
            ok = true;
            if (rdbtn_Standby.isSelected()) {
                try {
                    Runtime.getRuntime().exec("Rundll32.exe powrprof.dll,SetSuspendState Sleep");
                } catch (IOException ex) {
                    Logger.getLogger(StandbyForm.class.getName()).log(Level.SEVERE, null, ex);
                }
            } else if (rdbtn_Spegni.isSelected()) {
                try {
                    Runtime.getRuntime().exec("shutdown -s -t 0");
                    System.exit(0);
                } catch (IOException ex) {
                    Logger.getLogger(StandbyForm.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }while (ok == false);
}

使用这种方法存在问题。线程freez,你不能做什么,直到程序完成。阻止它的独特方式是关闭过程。

还有其他解决方案吗?像计时器或其他东西......

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试使用ScheduledExecutorService。你必须弄清楚将来“走出去”的时间有多远,然后用{{1}中的一个来安排你的任务(你ok == true时所做的一切)将来很多秒任务。