sandbox-java/scheduled-executor-service/src/main/java/de/swingbe/ses/Main.java

62 lines
1.7 KiB
Java

package de.swingbe.ses;
import java.util.concurrent.*;
import java.util.*;
//System.out.println();
import java.io.*;
class SchedulerExecutorServiceExample {
public static void main(String[] args)
{
System.out.println(
"A count-down-clock program that counts from 10 to 0");
// creating a ScheduledExecutorService object
ScheduledExecutorService scheduler
= Executors.newScheduledThreadPool(11);
// printing the current time
System.out.println(
"Current time : "
+ Calendar.getInstance().get(Calendar.SECOND));
// Scheduling the tasks
for (int i = 10; i >= 0; i--) {
scheduler.schedule(new Task(i), 10 - i,
TimeUnit.SECONDS);
}
// remember to shutdown the scheduler
// so that it no longer accepts
// any new tasks
scheduler.shutdown();
}
}
class Task implements Runnable {
private int num;
public Task(int num) { this.num = num; }
public void run()
{
if(num%1==0){
// create instance of Random class
Random rand = new Random();
// Generate random integers in range 0 to 1999
int randInt = rand.nextInt(2000);
System.out.println("num: " +num+", rand: " + randInt);
try {
Thread.sleep(randInt);
} catch (InterruptedException e) {
System.out.println("Another thread has interrupted this one, message: " + e.getMessage() + ", trace: " + e.getStackTrace());
}
System.out.println("num: "+num+", sleep() done.");
}
System.out.println(
"num: " + num + " Current time : "
+ Calendar.getInstance().get(Calendar.SECOND));
}
}