From 0ae424ee141b2f0f1e84929928a81dcb56d3f182 Mon Sep 17 00:00:00 2001 From: stedS <sven.steddin@reutlingen-university.de> Date: Mon, 6 Jan 2020 21:36:14 +0100 Subject: [PATCH] Erweiterung der Beispielprogramme im Abschnitt VL04-09 --- VL04_09/ThreadDurchInterface_1/.classpath | 6 ++++ VL04_09/ThreadDurchInterface_1/.project | 17 +++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++++ .../src/MyThreads/MyInputClass.java | 17 +++++++++ .../src/MyThreads/MyOutputClass.java | 35 +++++++++++++++++++ .../src/MyThreads/ThreadDurchInterface_1.java | 33 +++++++++++++++++ VL04_09/ThreadDurchInterface_2/.classpath | 6 ++++ VL04_09/ThreadDurchInterface_2/.project | 17 +++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++++ .../src/MyThreads/MyInputClass.java | 19 ++++++++++ .../src/MyThreads/MyOutputClass.java | 28 +++++++++++++++ .../src/MyThreads/MyOutputClassChild.java | 23 ++++++++++++ .../src/MyThreads/ThreadDurchInterface_2.java | 34 ++++++++++++++++++ VL04_09/ThreadDurchInterface_3/.classpath | 6 ++++ VL04_09/ThreadDurchInterface_3/.project | 17 +++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++++ .../src/MyThreads/MyInputClass.java | 19 ++++++++++ .../src/MyThreads/MyOutputClass.java | 30 ++++++++++++++++ .../src/MyThreads/MyOutputClassChild.java | 22 ++++++++++++ .../src/MyThreads/ThreadDurchInterface_3.java | 30 ++++++++++++++++ 20 files changed, 392 insertions(+) create mode 100644 VL04_09/ThreadDurchInterface_1/.classpath create mode 100644 VL04_09/ThreadDurchInterface_1/.project create mode 100644 VL04_09/ThreadDurchInterface_1/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadDurchInterface_1/src/MyThreads/MyInputClass.java create mode 100644 VL04_09/ThreadDurchInterface_1/src/MyThreads/MyOutputClass.java create mode 100644 VL04_09/ThreadDurchInterface_1/src/MyThreads/ThreadDurchInterface_1.java create mode 100644 VL04_09/ThreadDurchInterface_2/.classpath create mode 100644 VL04_09/ThreadDurchInterface_2/.project create mode 100644 VL04_09/ThreadDurchInterface_2/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadDurchInterface_2/src/MyThreads/MyInputClass.java create mode 100644 VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClass.java create mode 100644 VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClassChild.java create mode 100644 VL04_09/ThreadDurchInterface_2/src/MyThreads/ThreadDurchInterface_2.java create mode 100644 VL04_09/ThreadDurchInterface_3/.classpath create mode 100644 VL04_09/ThreadDurchInterface_3/.project create mode 100644 VL04_09/ThreadDurchInterface_3/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadDurchInterface_3/src/MyThreads/MyInputClass.java create mode 100644 VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClass.java create mode 100644 VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClassChild.java create mode 100644 VL04_09/ThreadDurchInterface_3/src/MyThreads/ThreadDurchInterface_3.java diff --git a/VL04_09/ThreadDurchInterface_1/.classpath b/VL04_09/ThreadDurchInterface_1/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/.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/ThreadDurchInterface_1/.project b/VL04_09/ThreadDurchInterface_1/.project new file mode 100644 index 0000000..999d841 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadDurchInterface_1</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/ThreadDurchInterface_1/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchInterface_1/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/.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/ThreadDurchInterface_1/src/MyThreads/MyInputClass.java b/VL04_09/ThreadDurchInterface_1/src/MyThreads/MyInputClass.java new file mode 100644 index 0000000..2d9713e --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/src/MyThreads/MyInputClass.java @@ -0,0 +1,17 @@ +package MyThreads; +import java.util.Scanner; +/** Der Thread wartet auf eine Eingabe von der Tastatur. Der Thread bricht mit einer Exception ab, + * wenn Zeichen eingegeben werden, die keine Zahlen sind, so dass die Zahlenkonvertierung fehlschlägt. + * @author stedS + */ +public class MyInputClass extends Thread { + + public void run() { + Scanner myScanner = new Scanner(System.in); + int ii = 0; + while (true) { + ii = myScanner.nextInt(); + System.out.println("\nEingabe: " + ii); +}}} + + diff --git a/VL04_09/ThreadDurchInterface_1/src/MyThreads/MyOutputClass.java b/VL04_09/ThreadDurchInterface_1/src/MyThreads/MyOutputClass.java new file mode 100644 index 0000000..c80314b --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/src/MyThreads/MyOutputClass.java @@ -0,0 +1,35 @@ +package MyThreads; +/** Der Thread gibt nach Ablauf einer Zählschleife den Text aus, mit dem er + * initialisiert wurde. + * @author stedS + */ +public class MyOutputClass implements Runnable { + private String text; + private final int COUNT; + + MyOutputClass(String text, int count) + { + this.text = text; + COUNT = count; + } + + public void run() { + long kk = 0; + int ll = COUNT; + while (true) { + if (kk++ % 20_000_000 == 0) { + if (ll != 0) { + System.out.print(text + ll + " "); + ll--; + } else { + System.out.println(text + ll + "newline "); + ll=COUNT; + } + } + } + } +} + + + + diff --git a/VL04_09/ThreadDurchInterface_1/src/MyThreads/ThreadDurchInterface_1.java b/VL04_09/ThreadDurchInterface_1/src/MyThreads/ThreadDurchInterface_1.java new file mode 100644 index 0000000..67cd421 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_1/src/MyThreads/ThreadDurchInterface_1.java @@ -0,0 +1,33 @@ +/** Programm zur Demonstration von Runnable. + * + * @author stedS + * @version 1.0 (2017-01-12) + */ +package MyThreads; +public class ThreadDurchInterface_1 { + /** Hauptprogramm legt 3 Threads an, von denen 2 Threads die run-Methode + * einer Klasse verwenden, welche das Interface Runnable implementiert. + * @param args Es werden keine Runtimeparameter verwendet + * @author stedS + */ + public static void main(String[] args) { + final int COUNT = 5; + + //Objekte anlegen, die keine Unterklassen von Thread sind + //dafür aber das Interface Runnable unterstützen: + MyOutputClass myRunnable1 = new MyOutputClass("Hallo", COUNT); + MyOutputClass myRunnable2 = new MyOutputClass("Meti", COUNT); + + //nun alle gewünschten Threads anlegen: + MyInputClass myThread1 = new MyInputClass(); + Thread myThread2 = new Thread(myRunnable1); + Thread myThread3 = new Thread(myRunnable2); + + //nun alle Thread-Objekte starten + myThread1.start(); + myThread2.start(); + myThread3.start(); + } +} + + diff --git a/VL04_09/ThreadDurchInterface_2/.classpath b/VL04_09/ThreadDurchInterface_2/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/.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/ThreadDurchInterface_2/.project b/VL04_09/ThreadDurchInterface_2/.project new file mode 100644 index 0000000..1801890 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadDurchInterface_2</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/ThreadDurchInterface_2/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchInterface_2/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/.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/ThreadDurchInterface_2/src/MyThreads/MyInputClass.java b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyInputClass.java new file mode 100644 index 0000000..e5b07fa --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyInputClass.java @@ -0,0 +1,19 @@ +package MyThreads; +import java.util.Scanner; +/** Der Thread wartet auf eine Eingabe von der Tastatur. Der Thread bricht mit einer Exception ab, + * wenn Zeichen eingegeben werden, die keine Zahlen sind, so dass die Zahlenkonvertierung fehlschlägt. + * @author stedS + */ +public class MyInputClass extends Thread { + + public void run() { + Scanner myScanner = new Scanner(System.in); + int ii = 0; + while (true) { + ii = myScanner.nextInt(); + System.out.println("\nEingabe: " + ii); + } + } +} + + diff --git a/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClass.java b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClass.java new file mode 100644 index 0000000..6ecd2d9 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClass.java @@ -0,0 +1,28 @@ +package MyThreads; +/** + * Subklassen dieser Klasse erben die Implemtierung von Runnable. + * @author stedS + * + */ +public class MyOutputClass implements Runnable { + private String text; + int cnt = 0; + + MyOutputClass(String text) + { + this.text = text; + } + + protected void MachWas() + { /*kann in der Kindklasse modifiziert werden*/ }; + + public void run() { + long kk = 0; + while (true) { + if (kk++ % 10_000_000 == 0) { + cnt++; + System.out.print(text + " "); + MachWas(); +}}}} + + diff --git a/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClassChild.java b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClassChild.java new file mode 100644 index 0000000..7eb6c56 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/src/MyThreads/MyOutputClassChild.java @@ -0,0 +1,23 @@ +package MyThreads; +/** + * Die Klasse zeigt, dass man die Inplementierung der Schnittstelle Runnable + * von seiner Elternklasse erben kann. + * @author stedS + */ +public class MyOutputClassChild extends MyOutputClass { + + private int crlfCnt = 0; + + public MyOutputClassChild(String text, int cnt) { + super(text); + crlfCnt = cnt; + } + + @Override + protected void MachWas() { + if (crlfCnt != 0) { + if (cnt % crlfCnt == 0) { + System.out.println("CRLF"); +}}}} + + diff --git a/VL04_09/ThreadDurchInterface_2/src/MyThreads/ThreadDurchInterface_2.java b/VL04_09/ThreadDurchInterface_2/src/MyThreads/ThreadDurchInterface_2.java new file mode 100644 index 0000000..d304de8 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_2/src/MyThreads/ThreadDurchInterface_2.java @@ -0,0 +1,34 @@ +/** Programm zur Demonstration des Einsatzes von Runnable: Die Klasse, + * welche an den Thread übergeben wird erbt die Methode run() und damit die + * Implementierung der Schnittstelle Runnable von seiner Elternklasse. + * + * @author stedS + * @version 1.0 (2017-01-12) + */ +package MyThreads; +public class ThreadDurchInterface_2 { + /** Hauptprogramm legt 3 Threads an, von denen 2 Threads die run-Methode + * einer Klasse verwenden, welche das Interface Runnable implementiert. + * @param args Es werden keine Runtimeparameter verwendet + * @author stedS + */ + public static void main(String[] args) { + + //zuerst die Objekte anlegen, die von Thread nicht erben können + //aber dafür das Interface Runnable unterstützen: + MyOutputClassChild myRunnable1 = new MyOutputClassChild("Hallo",4); + MyOutputClass myRunnable2 = new MyOutputClass("Meti"); + + //nun alle gewünschten Threads anlegen: + MyInputClass myThread1 = new MyInputClass(); + Thread myThread2 = new Thread(myRunnable1); + Thread myThread3 = new Thread(myRunnable2); + + //Thread-Objekte starten + myThread1.start(); + myThread2.start(); + myThread3.start(); + } +} + + diff --git a/VL04_09/ThreadDurchInterface_3/.classpath b/VL04_09/ThreadDurchInterface_3/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/.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/ThreadDurchInterface_3/.project b/VL04_09/ThreadDurchInterface_3/.project new file mode 100644 index 0000000..bd81611 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadDurchInterface_3</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/ThreadDurchInterface_3/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchInterface_3/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/.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/ThreadDurchInterface_3/src/MyThreads/MyInputClass.java b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyInputClass.java new file mode 100644 index 0000000..a5e382a --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyInputClass.java @@ -0,0 +1,19 @@ +package MyThreads; +import java.util.Scanner; +/** Der Thread wartet auf eine Eingabe von der Tastatur. Der Thread bricht mit einer Exception ab, + * wenn Zeichen eingegeben werden, die keine Zahlen sind, so dass die Zahlenkonvertierung fehlschlägt. + * @author stedS + */ +public class MyInputClass extends Thread { + + public void run() { + Scanner myScanner = new Scanner(System.in); + int ii = 0; + while (true) { + ii = myScanner.nextInt(); + System.out.println("\nEingabe: " + ii); + } + } +} + + diff --git a/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClass.java b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClass.java new file mode 100644 index 0000000..89719ab --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClass.java @@ -0,0 +1,30 @@ +package MyThreads; +/** Die Klasse definiert die Methode MachWas() als abstract. Sie muss von einer Kindklasse + * überschrieben werden. Die Nachkommen dieser Klasse erben wiederum die Implementierung + * der Schnittstelle Runnable. + * @author stedS + */ +public abstract class MyOutputClass { + private String text; + int cnt = 0; + + MyOutputClass(String text) + { + this.text = text; + } + + protected abstract void MachWas(); + + public void run() { + long kk = 0; + while (true) { + if (kk++ % 1_000_000 == 0) { + cnt++; + System.out.print(text + " "); + MachWas(); + } + } + } +} + + diff --git a/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClassChild.java b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClassChild.java new file mode 100644 index 0000000..53ddd64 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/src/MyThreads/MyOutputClassChild.java @@ -0,0 +1,22 @@ +package MyThreads; +/** + * Die Klasse zeigt, dass man die Inplementierung der Schnittstelle Runnable + * von seiner Elternklasse erben kann. + * @author stedS + */ +public class MyOutputClassChild extends MyOutputClass implements Runnable { + + private int crlfCnt = 0; + + public MyOutputClassChild(String text, int cnt) { + super(text); + crlfCnt = cnt; + } + + protected void MachWas() { + if (crlfCnt != 0) { + if (cnt % crlfCnt == 0) { + System.out.println("CRLF"); +}}}} + + diff --git a/VL04_09/ThreadDurchInterface_3/src/MyThreads/ThreadDurchInterface_3.java b/VL04_09/ThreadDurchInterface_3/src/MyThreads/ThreadDurchInterface_3.java new file mode 100644 index 0000000..d287ff4 --- /dev/null +++ b/VL04_09/ThreadDurchInterface_3/src/MyThreads/ThreadDurchInterface_3.java @@ -0,0 +1,30 @@ +/** Programm zur Demonstration des Einsatzes von Runnable: Die Klasse, + * welche an den Thread übergeben wird erbt die Methode run(), und damit die + * Implementierung der Schnittstelle Runnable, von seiner Elternklasse. + * + * @author stedS + * @version 1.0 (2017-01-12) + */ +package MyThreads; +public class ThreadDurchInterface_3 { + + public static void main(String[] args) { + + //zuerst die Objekte anlegen, die von Thread nicht erben können + //aber dafür das Interface Runnable unterstützen: + MyOutputClassChild myRunnable1 = new MyOutputClassChild("Hallo",4); + MyOutputClassChild myRunnable2 = new MyOutputClassChild("Meti",0); + + //nun alle gewünschten Threads anlegen: + MyInputClass myThread1 = new MyInputClass(); + Thread myThread2 = new Thread(myRunnable1); + Thread myThread3 = new Thread(myRunnable2); + + //Thread-Objekte starten + myThread1.start(); + myThread2.start(); + myThread3.start(); + } +} + + -- GitLab