Java-如何设置pc必须执行操作的时间?
我正在做一个程序,在选定的时间关闭或使你的电脑进入睡眠状态 目前,我使用了一种野蛮的方法来实现这一点,我使用了一个循环来控制时间的连续性,如果小时和分钟与所选值相同,则操作开始,否则循环继续Java-如何设置pc必须执行操作的时间?,java,timer,runtime,freeze,shutdown,Java,Timer,Runtime,Freeze,Shutdown,我正在做一个程序,在选定的时间关闭或使你的电脑进入睡眠状态 目前,我使用了一种野蛮的方法来实现这一点,我使用了一个循环来控制时间的连续性,如果小时和分钟与所选值相同,则操作开始,否则循环继续 private void btn_SetActionPerformed(java.awt.event.ActionEvent evt) { hour_Decided = Integer.parseInt((String)
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);
}
用这种方法有一个问题。线程是自由的,在程序完成之前你什么都不能做。停止它的唯一方法是关闭进程
还有别的解决办法吗?像计时器之类的
谢谢你的帮助。试着用一个。您必须计算出运行时间在未来有多远,然后使用ScheduledExecutorService.schedule tasks中的一个,在未来的几秒钟内,当ok==true时,计划您的任务。给定的代码不是每秒钟执行一次,而是连续执行哦,是的,是的,我说得很糟糕,但是,对于要求外部工具或库的问题也不是这样,所以我并没有真的这么说。也许这是一个可行的方法。一个解决方案是设置一个周期性检查是否是关闭的时候