javaについて勉強中です。
一定時間経過した後に、下の処理を実行させるような簡単なプログラムの作り方を、 教えていただけないでしょうか?
timerクラスを使えばいいみたいなのですが使い方がわかりません。
System.out.println("おはよう");
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
まず EventListener について学ぶ必要があるようです。
また、タイマのイベント発行は通常 one-shot, continuous の2種類に大別されます。
EventListenerについて理解ができていれば、自分の処理の中でタイマ・イベントの発行及びハンドリングする処理を記述すればよいことになります。
その際、イベント発行や実装方法によってはタイマーの開始の他に明示的な停止の手続きも必要になると思います。
それらを踏まえた上で以下のサイトを読んでみると、タイマの使い方が理解できると思います。
ttp://www.ibm.com/developerworks/jp/java/library/j-schedule/
投稿2015/07/15 05:17
退会済みユーザー
総合スコア0
0
ベストアンサー
** ※ GUI(Swing, JavaFXなど)の場合は、また別のクラスを使用する必要があります(動くけど正しくない)ので、ご注意ください。 **
メインスレッドで一定時間待機する場合は、Thread.sleep
か、その類似APIを使用します。
Thread.sleep - Java8 API ドキュメント
TimeUnit#sleep - Java8 API ドキュメント
メインスレッド以外でバックグラウンド処理させるには、ScheduledExecutorService
を使うと良いです。
ScheduledExecutorService - Java8 API ドキュメント
いずれにしても、マルチスレッドについて少し知る必要があると思います。
サンプルコード:
lang
1import java.util.concurrent.Executors; 2import java.util.concurrent.ScheduledExecutorService; 3import java.util.concurrent.TimeUnit; 4 5try { 6 Thread.sleep(1500L); // メインスレッドで1.5秒待機 7 System.out.println("おはよう"); 8} catch (InterruptedException e) { 9 e.printStackTrace(); 10} 11try { 12 TimeUnit.MINUTES.sleep(1L); // メインスレッドで1分待機 13 System.out.println("おはよう"); 14} catch (InterruptedException e) { 15 e.printStackTrace(); 16} 17 18ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 19// Java8の書き方 20scheduler.schedule(() -> System.out.println("おはよう"), 1L, TimeUnit.SECONDS); // 1秒後に別スレッドで実行
投稿2015/07/15 05:08
編集2015/07/15 06:47総合スコア9388
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/15 05:59
2015/07/15 06:18
2015/07/15 06:41
2015/07/15 06:48
退会済みユーザー
2015/07/15 06:52 編集
2015/07/15 23:44
2015/07/15 23:53
2015/07/16 01:30
2015/07/16 02:25
2015/07/16 03:58
0
java.util.Timerを使うならこんな感じでしょうかね。
10秒後に「タイマーからおはよう」が出力されます。
import java.util.Timer;
import java.util.TimerTask;
public class test {
public static void main(String[] args) {
TimerTask timerTask = new TimerTask(){
public void run() {
System.out.println("タイマーからおはよう");
}
};
System.out.println("おはよう");
Timer timer = new Timer();
timer.schedule(timerTask, 10000L);
}
}
投稿2015/07/15 05:13
総合スコア90
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/15 05:48
2015/07/15 06:15
2015/07/15 06:24
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/15 05:49
2015/07/15 06:20
退会済みユーザー
2015/07/15 06:35