0

Threadプログラムの実行時に動作を開始し、プログラムが閉じられると終了する を作成する必要があります。これThreadは、1分ごとに何かをチェックします。

Thread.sleep()を使用するか、または何を使用して、このスケジューリングに最適な方法はTimer何ですか?

4

3 に答える 3

3

あなたはコードを提供していませんが、この種のものについての例がたくさんあります、ここに1つあります:

import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
       Executors.newScheduledThreadPool(1);

    public void beepForAnHour() {
        final Runnable beeper = new Runnable() {
                public void run() { System.out.println("beep"); }
            };
        final ScheduledFuture<?> beeperHandle =
            scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
        scheduler.schedule(new Runnable() {
                public void run() { beeperHandle.cancel(true); }
            }, 60 * 60, SECONDS);
    }
 }

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ScheduledExecutorService.html#scheduleAtFixedRate(java.lang.Runnable

于 2013-01-24T20:50:23.293 に答える
2

だからあなたは次のようなものを持っているでしょう

public class Application {
     private final ScheduledExecutorService executor;
     private final Runnable task;

     public Application(ScheduledExecutorService executor, Runnable task) {
         this.executor = executor;
         this.task = task;
     }

     public void init() {
         executor.scheduleAtFixedRate(task, 0, 60, TimeUnit.SECONDS);
     }
     public void shutdown() {
         executor.shutdownNow();
     }
}

そして、あなたは次のようなものであなたのアプリケーションを作成します

 // ....
 Application app = new Application(Executors.newSingleThreadScheduledExecutor(), task);
 app.init();
 // ....
 // at end
 app.shutdown();
于 2013-01-24T20:51:50.020 に答える