From 30df34ebacf0328670d3a9d58d69667c0f6d2cb0 Mon Sep 17 00:00:00 2001 From: "Begerad, Stefan" Date: Thu, 24 Feb 2022 05:09:36 -0500 Subject: [PATCH] feat(ses): add scheduled-executor-service --- scheduled-executor-service/README.md | 6 ++ scheduled-executor-service/pom.xml | 86 +++++++++++++++++++ .../src/main/java/de/swingbe/ses/Main.java | 61 +++++++++++++ 3 files changed, 153 insertions(+) create mode 100644 scheduled-executor-service/README.md create mode 100644 scheduled-executor-service/pom.xml create mode 100644 scheduled-executor-service/src/main/java/de/swingbe/ses/Main.java diff --git a/scheduled-executor-service/README.md b/scheduled-executor-service/README.md new file mode 100644 index 0000000..57fa48d --- /dev/null +++ b/scheduled-executor-service/README.md @@ -0,0 +1,6 @@ +# Overview +This project can serve as example for asynchronous task scheduling with Maven and Java. + +# Links +[Generating random numbers in Java](https://www.geeksforgeeks.org/generating-random-numbers-in-java/) +[https://www.geeksforgeeks.org/generating-random-numbers-in-java/](https://www.geeksforgeeks.org/scheduledexecutorservice-interface-in-java/) diff --git a/scheduled-executor-service/pom.xml b/scheduled-executor-service/pom.xml new file mode 100644 index 0000000..0dc5462 --- /dev/null +++ b/scheduled-executor-service/pom.xml @@ -0,0 +1,86 @@ + + + 4.0.0 + + ses + description + https://swingbe.de + de.swingbe + ses + 0.0.1 + jar + + + + GNU General Public License + https://www.gnu.org/licenses/gpl-3.0.txt + + + + + https://github.com/Software-Ingenieur-Begerad/sandbox-java + + + + + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + + 11 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + true + + shaded + + + + + de.swingbe.ses.SchedulerExecutorServiceExample + + + + + + + + + + + diff --git a/scheduled-executor-service/src/main/java/de/swingbe/ses/Main.java b/scheduled-executor-service/src/main/java/de/swingbe/ses/Main.java new file mode 100644 index 0000000..7ef0d1f --- /dev/null +++ b/scheduled-executor-service/src/main/java/de/swingbe/ses/Main.java @@ -0,0 +1,61 @@ +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)); + } +}