Calendar.SECOND
固定定数値( 13
) が に等しいことを確認しています30
。明らかに、これは真ではないため、ダイアログは表示されません。Calendar
インスタンスでこのフィールドをチェックする必要があります。
また、使用schedule
すると、エグゼキュータ スレッドが 1 回だけ実行されます。を使用しscheduleAtFixedRate
ます。
また、呼び出しが をブロックしないようにするにはshowMessageDialog
、を呼び出す必要があります。EDT
Executor
Thread
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(new Runnable() {
public void run() {
Calendar calendar = Calendar.getInstance();
int second = calendar.get(Calendar.SECOND);
if (second == 30) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JOptionPane.showMessageDialog(null, "Hola Amigo");
}
});
}
}
}, 1, 1, TimeUnit.SECONDS);
ExecutorService
現在の秒を繰り返しチェックするのではなく、30 秒ごとに呼び出したい場合は、次のように呼び出すことができます。
scheduler.scheduleAtFixedRate(myRunnable, 1, 30, TimeUnit.SECONDS);