diff --git a/VL04_09/ThreadDurchInterface_1/.classpath b/VL04_09/ThreadDurchInterface_1/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1 --- /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 0000000000000000000000000000000000000000..999d84145d51ea1967f03dc2831ba66fd262e803 --- /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 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf --- /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 0000000000000000000000000000000000000000..2d9713e8e8fcd1bc5b87f50f617ff325dfda85e8 --- /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 0000000000000000000000000000000000000000..c80314be56b57ff049982d9ef8857a9f3de835fb --- /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 0000000000000000000000000000000000000000..67cd421493f87bd56af78d3cca2c3b9bbe7bf9a9 --- /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 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1 --- /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 0000000000000000000000000000000000000000..1801890251c6d48781fdc5f7f82b01d517315796 --- /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 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf --- /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 0000000000000000000000000000000000000000..e5b07fa2a365a740f86ce707b642b216149d2bd9 --- /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 0000000000000000000000000000000000000000..6ecd2d9670a405208e37e27803e8e67529bca22e --- /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 0000000000000000000000000000000000000000..7eb6c56ca1f85204e033d854a0565fcc89fcafc4 --- /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 0000000000000000000000000000000000000000..d304de836a9f14286ca006dec0fe643f74075bb9 --- /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 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1 --- /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 0000000000000000000000000000000000000000..bd8161112103ab4aa1187bd479103a4a425dae1d --- /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 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf --- /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 0000000000000000000000000000000000000000..a5e382a61de3c2b665dffcfae43cd19648d877ab --- /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 0000000000000000000000000000000000000000..89719abcbb02effe867f33220157feb9cac3d39b --- /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 0000000000000000000000000000000000000000..53ddd642e84edb73440fb1f74b71169a4efd1ce2 --- /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 0000000000000000000000000000000000000000..d287ff4adc4fda56c7152fa2eafd2df233020369 --- /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(); + } +} + +