翻訳者のメモ:私は、タイミングのあるタスクを使用してガベージコレクションを実行することは、翻訳者が接触するプロジェクトから判断することではないと考えています。データ、ファイルなど
この記事では、3つの異なる実装方法を紹介します。
1。通常のスレッドの実装
2。TimerTaskの実装
3。ScheduleDexeCutorServiceの実装
1。通常のスレッド
これは最も一般的なものです。スレッドを作成し、whileループで実行し、タイミングタスクの効果を実現します。これは迅速かつ簡単に実装できます。コードは次のとおりです。
コードコピーは次のとおりです。
パブリッククラスタスク1 {
public static void main(string [] args){
//秒単位で実行します
最終的なlong timeinterval = 1000;
runnable runnable = new runnable(){
public void run(){
while(true){
// --------実行するタスクのコード
System.out.println( "hello !!");
// ----------ここで終了します
試す {
thread.sleep(timeinterval);
} catch(arternedexception e){
e.printstacktrace();
}
}
}
};
スレッドスレッド= newスレッド(runnable);
thread.start();
}
}
2。タイマーとティマタスクを使用します
上記の実装は非常に高速で簡単ですが、機能も欠けています。
上記の方法と比較して、TimerとTimertaskの使用には次の利点があります。
1。タスクの開始とキャンセル時に制御されます
2。タスクを初めて実行するときに必要な遅延時間を指定できます
実装中、タイマークラスはタスクをスケジュールでき、ティマタスクはrun()メソッドの特定のタスクを実装できます。
タイマーインスタンスはマルチタスクをスケジュールでき、スレッドセーフです。
タイマーのコンストラクターが呼び出されると、タスクのスケジュールに使用できるスレッドが作成されます。
これがコードです:
コードコピーは次のとおりです。
java.util.timerをインポートします。
java.util.timertaskをインポートします。
パブリッククラスタスク2 {
public static void main(string [] args){
timertask task = new timertask(){
@オーバーライド
public void run(){
//実行するタスクはここに行きます
System.out.println( "Hello !!!");
}
};
タイマータイマー= new Timer();
長い遅延= 0;
long periodperiod = 1 * 1000;
//間隔で実行されるタスクをスケジュールします
Timer.scheduleatfixedrate(タスク、遅延、
integerperiod);
} //メインの終わり
}
これらのクラスは、JDK 1.3以降に存在します。
3。ScheduleDexecutorService
ScheduleDexecutorServiceは、Java SE 5 java.util.concurrentの同時ツールクラスとして導入されました。
上記の2つの方法と比較して、次の利点があります。
1。タイマーの単一スレッドと比較して、スレッドプールを介してタスクを実行します。
2。最初のタスク実行の遅延時間を設定できます
3.実行時間間隔を設定するための良好な合意を提供する
以下は、コードのパラメーターの制御を介して、ScheduleDexeCutorService#を使用してこの例を示します。
コードコピーは次のとおりです。
java.util.concurrent.executorsをインポートします。
java.util.concurrent.scheduledexecutorserviceをインポートします。
java.util.concurrent.timeunitをインポートします。
パブリッククラスタスク3 {
public static void main(string [] args){
runnable runnable = new runnable(){
public void run(){
//実行するタスクはここに行きます
System.out.println( "hello !!");
}
};
ScheduleDexecutorservice service = executors
.newsinglethreadscheduledexecutor();
service.scheduleatfixedrate(runnable、0、1、timeunit.seconds);
}
}