最近私はHello World
をプリントアウトするために多数のループを使っています:
int counter = 0;
while(true) {
//loop for ~5 seconds
for(int i = 0; i < 2147483647 ; i++) {
//another loop because it's 2012 and PCs have gotten considerably faster :)
for(int j = 0; j < 2147483647 ; j++){ ... }
}
System.out.println(counter + ". Hello World!");
counter++;
}
これは非常に愚かな方法であると私は理解していますが、私はまだJavaでタイマーライブラリを使用したことがありません。 3秒ごとに印刷するように上記を変更する方法
また、 Timer
および TimerTask
クラスを見て、タスクをn
秒ごとに実行するようにスケジュールすることもできます。
TimerTask
を継承し、public void run()
メソッドをオーバーライドするクラスが必要です。これは、そのクラスのインスタンスを timer.schedule()
methodに渡すたびに実行されます。
これは、5秒ごとにHello World
を出力する例です。 -
class SayHello extends TimerTask {
public void run() {
System.out.println("Hello World!");
}
}
// And From your main() method or any other method
Timer timer = new Timer();
timer.schedule(new SayHello(), 0, 5000);
定期的なタスクを実行したい場合はScheduledExecutorService
を使用してください。具体的には ScheduledExecutorService.scheduleAtFixedRate
コード:
Runnable helloRunnable = new Runnable() {
public void run() {
System.out.println("Hello world");
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(helloRunnable, 0, 3, TimeUnit.SECONDS);
これをやってみてください。
Timer t = new Timer();
t.schedule(new TimerTask() {
@Override
public void run() {
System.out.println("Hello World");
}
}, 0, 5000);
このコードはコンソールに印刷を実行しますHello World every 50ミリ秒(5秒)。詳細については、 https://docs.Oracle.com/javase/1.5.0/docs/api/Java/util/Timer.html を参照してください。
私はタイマーでそれを把握し、それが役立つことを願っています。同じパッケージのJava.util.Timer
とTimerTask
からタイマーを使用しました。下記参照:
TimerTask task = new TimerTask() {
@Override
public void run() {
System.out.println("Hello World");
}
};
Timer timer = new Timer();
timer.schedule(task, new Date(), 3000);
ループの内側にThread.sleep(3000)を使用
public class HelloWorld extends TimerTask{
public void run() {
System.out.println("Hello World");
}
}
public class PrintHelloWorld {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new HelloWorld(), 0, 5000);
while (true) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println("InterruptedException Exception" + e.getMessage());
}
}
}
}
無限ループが作成され、広告スケジューラタスクが設定されます。
最も簡単な方法は、メインスレッドを3000ミリ秒(3秒)の間スリープさせることです。
for(int i = 0; i< 10; i++) {
try {
//sending the actual Thread of execution to sleep X milliseconds
Thread.sleep(3000);
} catch(InterruptedException ie) {}
System.out.println("Hello world!"):
}
これは少なくともXミリ秒スレッドを停止します。スレッドはもっと長い時間スリープ状態にあるかもしれませんが、それはJVM次第です。保証される唯一のことは、スレッドが少なくともそれらのミリ秒の間スリープするということです。 Thread#sleep
docを見てください。
現在実行中のスレッドを、指定されたミリ秒数の間スリープさせます(= /// =)。システムタイマーとスケジューラの正確さと正確さによります。
Java.util.Timer
およびTimer#schedule(TimerTask,delay,period)
メソッドを使用すると役立ちます。
public class RemindTask extends TimerTask {
public void run() {
System.out.println(" Hello World!");
}
public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new RemindTask(), 3000,3000);
}
}
これはJavaでスレッドを使う簡単な方法です:
for(int i = 0; i< 10; i++) {
try {
//sending the actual Thread of execution to sleep X milliseconds
Thread.sleep(3000);
} catch(Exception e) {
System.out.println("Exception : "+e.getMessage());
}
System.out.println("Hello world!");
}
これはThread ConstructorでRunnableインターフェースを使うもう一つの簡単な方法です
public class Demo {
public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread T1 : "+i);
}
}
});
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread T2 : "+i);
}
}
});
Thread t3 = new Thread(new Runnable() {
@Override
public void run() {
for(int i = 0; i < 5; i++){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Thread T3 : "+i);
}
}
});
t1.start();
t2.start();
t3.start();
}
}
彼が言ったこと。必要に応じて例外を処理できますが、Thread.sleep(milliseconds);最適なルートです。
public static void main(String[] args) throws InterruptedException {