From 70b1e4073992a4dfa3a45f9857a3ece3eee988bf Mon Sep 17 00:00:00 2001 From: stedS <sven.steddin@reutlingen-university.de> Date: Thu, 23 Jan 2020 00:40:33 +0100 Subject: [PATCH] Erweiterung Beispielprojekte --- VL04_09/ThreadTestInterrupt/.classpath | 6 +++ VL04_09/ThreadTestInterrupt/.project | 17 ++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 +++++ .../src/inf3/BabyThread.java | 22 ++++++++++ .../src/inf3/ThreadTestInterrupt.java | 38 ++++++++++++++++ .../src/inf3/WeckerThread.java | 43 +++++++++++++++++++ 6 files changed, 137 insertions(+) create mode 100644 VL04_09/ThreadTestInterrupt/.classpath create mode 100644 VL04_09/ThreadTestInterrupt/.project create mode 100644 VL04_09/ThreadTestInterrupt/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadTestInterrupt/src/inf3/BabyThread.java create mode 100644 VL04_09/ThreadTestInterrupt/src/inf3/ThreadTestInterrupt.java create mode 100644 VL04_09/ThreadTestInterrupt/src/inf3/WeckerThread.java diff --git a/VL04_09/ThreadTestInterrupt/.classpath b/VL04_09/ThreadTestInterrupt/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/.classpath @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_09/ThreadTestInterrupt/.project b/VL04_09/ThreadTestInterrupt/.project new file mode 100644 index 0000000..4e6b44e --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadTestInterrupt</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/VL04_09/ThreadTestInterrupt/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadTestInterrupt/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/VL04_09/ThreadTestInterrupt/src/inf3/BabyThread.java b/VL04_09/ThreadTestInterrupt/src/inf3/BabyThread.java new file mode 100644 index 0000000..fde9809 --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/src/inf3/BabyThread.java @@ -0,0 +1,22 @@ +package inf3; + +public class BabyThread extends Thread { + private int sleepDuration; + + BabyThread(int sleepDuration, String babyName) { + super(); + this.sleepDuration = sleepDuration; + this.setName(babyName); + } + + public void run() { + System.out.println(this.getName() + " schlafen gelegt"); + try { + Thread.sleep(sleepDuration); + System.out.println("\n" + this.getName() + " ausgeschlafen"); + } + catch (InterruptedException e) { + System.out.println("\n" + this.getName() + " aufgeweckt und sauer"); + } + } +} diff --git a/VL04_09/ThreadTestInterrupt/src/inf3/ThreadTestInterrupt.java b/VL04_09/ThreadTestInterrupt/src/inf3/ThreadTestInterrupt.java new file mode 100644 index 0000000..c9d1d06 --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/src/inf3/ThreadTestInterrupt.java @@ -0,0 +1,38 @@ +/** ThreadTestInterrupt.java +* +* @author Steddin +* @version 1.00, 2017-01-19 +*/ +package inf3; +public class ThreadTestInterrupt { + + public static void main(String[] args) { + + BabyThread[] baby = new BabyThread[4]; + baby[0] = new BabyThread(8000,"Hans"); + baby[1] = new BabyThread(5000,"Ludwig"); + baby[2] = new BabyThread(5000,"Klara"); + baby[3] = new BabyThread(2000,"Erna"); + + for (BabyThread aa: baby) { + aa.start(); + } + + WeckerThread wecker = new WeckerThread(baby); + wecker.setDaemon(true); + wecker.start(); + + + for (BabyThread aa: baby) { + try { + while (aa.isAlive()) { + System.out.print ("... es schläft noch jemand "); + aa.join(1000); + } + } catch (InterruptedException e) { + } + } + System.out.println ("Alle Babys wach :)"); + } +} + diff --git a/VL04_09/ThreadTestInterrupt/src/inf3/WeckerThread.java b/VL04_09/ThreadTestInterrupt/src/inf3/WeckerThread.java new file mode 100644 index 0000000..9ce5583 --- /dev/null +++ b/VL04_09/ThreadTestInterrupt/src/inf3/WeckerThread.java @@ -0,0 +1,43 @@ +package inf3; +import java.io.IOException; +import java.io.InputStreamReader; + + +public class WeckerThread extends Thread { + + BabyThread[] babys; + InputStreamReader isr; + + WeckerThread (BabyThread[] babys) { + super(); + this.babys = babys; + isr = new InputStreamReader(System.in); + } + + public void run() { + try { + while (!isr.ready()) { + try { + System.out.print(" TickTack "); + Thread.sleep(200); + } catch (InterruptedException e) { + System.out.println("Deamon abgebrochen"); + } + } + System.out.println("Wecker aktiviert"); + for (BabyThread aa: babys) { + if (aa.isAlive()) { + aa.interrupt(); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } +} + + + + + + -- GitLab