From 8c9a400c05b3575d41aa696d806a481e4d0a243d Mon Sep 17 00:00:00 2001 From: stedS <sven.steddin@reutlingen-university.de> Date: Mon, 6 Jan 2020 17:06:20 +0100 Subject: [PATCH] Verzeichnis VL04_09 erweitert --- VL04_04/CallByRefArray-C/bin/.gitignore | 1 - VL04_09/ThreadDurchVererbung_0/.classpath | 7 ++++ VL04_09/ThreadDurchVererbung_0/.project | 17 ++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++++ .../src/MyThreads/MainProg.java | 34 +++++++++++++++++++ .../src/MyThreads/MyThreadClass.java | 16 +++++++++ VL04_09/ThreadDurchVererbung_1/.classpath | 6 ++++ VL04_09/ThreadDurchVererbung_1/.project | 17 ++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 11 ++++++ .../src/inf3/MyInputClass.java | 19 +++++++++++ .../src/inf3/MyOutputClass.java | 32 +++++++++++++++++ .../src/inf3/ThreadDurchVererbung_1.java | 34 +++++++++++++++++++ 12 files changed, 204 insertions(+), 1 deletion(-) delete mode 100644 VL04_04/CallByRefArray-C/bin/.gitignore create mode 100644 VL04_09/ThreadDurchVererbung_0/.classpath create mode 100644 VL04_09/ThreadDurchVererbung_0/.project create mode 100644 VL04_09/ThreadDurchVererbung_0/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadDurchVererbung_0/src/MyThreads/MainProg.java create mode 100644 VL04_09/ThreadDurchVererbung_0/src/MyThreads/MyThreadClass.java create mode 100644 VL04_09/ThreadDurchVererbung_1/.classpath create mode 100644 VL04_09/ThreadDurchVererbung_1/.project create mode 100644 VL04_09/ThreadDurchVererbung_1/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadDurchVererbung_1/src/inf3/MyInputClass.java create mode 100644 VL04_09/ThreadDurchVererbung_1/src/inf3/MyOutputClass.java create mode 100644 VL04_09/ThreadDurchVererbung_1/src/inf3/ThreadDurchVererbung_1.java diff --git a/VL04_04/CallByRefArray-C/bin/.gitignore b/VL04_04/CallByRefArray-C/bin/.gitignore deleted file mode 100644 index e7d460a..0000000 --- a/VL04_04/CallByRefArray-C/bin/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/inf3/ diff --git a/VL04_09/ThreadDurchVererbung_0/.classpath b/VL04_09/ThreadDurchVererbung_0/.classpath new file mode 100644 index 0000000..69c4e94 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_0/.classpath @@ -0,0 +1,7 @@ +<?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/ThreadDurchVererbung_0/.project b/VL04_09/ThreadDurchVererbung_0/.project new file mode 100644 index 0000000..3850d23 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_0/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadDurchVererbung_0</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/ThreadDurchVererbung_0/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchVererbung_0/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_0/.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/ThreadDurchVererbung_0/src/MyThreads/MainProg.java b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/MainProg.java new file mode 100644 index 0000000..24315d3 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/MainProg.java @@ -0,0 +1,34 @@ +package MyThreads; +/** Das Programm zeigt, wie das Betriebssystem (die Java VM) verschiedenen Threads +* Rechenzeit zuordnet. +* +* <p>Der Main-Thread des Programms gibt hierzu über eine Endlosschleife +* Sternchen auf der Konsole aus. Parallel hierzu wird ein zweiter Thread gestartet, der +* auf eine Eingabe von der Tastatur wartet und ein eigegebene Zeichen wieder auf der Konsole +* ausgibt, sobald die Returntaste gedrückt wird. +* +* <p>Es ist zu erkennen, dass die Ausgabe des Echos der Tastatureingabe offenbar die Ausgabe der +* Sternchen kurzzeitig unterbricht. +* +* @author Steddin +* @version 2.00, 2020-01-06 +*/ +public class MainProg { + public static void main(String[] args) { + MyThreadClass myThread = new MyThreadClass(); + myThread.start(); + int kk = 0; + while (true) { + if ((kk%10_000_000) == 0) { + System.out.print("*"); + } + kk++; + if (kk%100_000_000==0) { + System.out.print("\n"); + } + } + } +} + + + diff --git a/VL04_09/ThreadDurchVererbung_0/src/MyThreads/MyThreadClass.java b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/MyThreadClass.java new file mode 100644 index 0000000..0bca156 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/MyThreadClass.java @@ -0,0 +1,16 @@ +package MyThreads; +import java.util.Scanner; + +public class MyThreadClass 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/ThreadDurchVererbung_1/.classpath b/VL04_09/ThreadDurchVererbung_1/.classpath new file mode 100644 index 0000000..63b7e89 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_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/ThreadDurchVererbung_1/.project b/VL04_09/ThreadDurchVererbung_1/.project new file mode 100644 index 0000000..cb9ea86 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_1/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadDurchVererbung_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/ThreadDurchVererbung_1/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchVererbung_1/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..bb35fa0 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_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/ThreadDurchVererbung_1/src/inf3/MyInputClass.java b/VL04_09/ThreadDurchVererbung_1/src/inf3/MyInputClass.java new file mode 100644 index 0000000..6d61d69 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_1/src/inf3/MyInputClass.java @@ -0,0 +1,19 @@ +package inf3; +/** 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. + */ +import java.util.Scanner; + +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/ThreadDurchVererbung_1/src/inf3/MyOutputClass.java b/VL04_09/ThreadDurchVererbung_1/src/inf3/MyOutputClass.java new file mode 100644 index 0000000..ea4540a --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_1/src/inf3/MyOutputClass.java @@ -0,0 +1,32 @@ +package inf3; +public class MyOutputClass extends Thread { + 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++ % 10_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/ThreadDurchVererbung_1/src/inf3/ThreadDurchVererbung_1.java b/VL04_09/ThreadDurchVererbung_1/src/inf3/ThreadDurchVererbung_1.java new file mode 100644 index 0000000..40c3ad0 --- /dev/null +++ b/VL04_09/ThreadDurchVererbung_1/src/inf3/ThreadDurchVererbung_1.java @@ -0,0 +1,34 @@ +package inf3; +/** Programm zur Demonstration von zeitgleich laufenden Threads. + * + * <ul> + * <li> Das Programm liest von der Konsole Text ein (Thread1) und gibt über zwei + * weitere Threads unterschiedliche Texte auf der Konsole aus (Thread2 und 3) + * </li> + * <li> Man erkennt, dass das OS bzw. die JVM die Ausführung der Threads koordiniert + * und dabei keine spezielle Reihenfolge beachtet. Dies ist möglicherweise auf + * entsprechende Optimierungsstrategien zurückzuführen. + * </li> + * <li> Es soll über den Taskmanager beobachtet werden, wieviele Threads und Prozesse + * vor, während und nach dem Aufruf des Programmes angezeigt werden und wie die + * Belastung der CPU ausfällt. + * </li> + * </ul> + * @author stedS + * @version 2.0 (2020-01-06) Ausgabe verändert + * @version 1.0 (2016-01-11) + */ +public class ThreadDurchVererbung_1 { + + public static void main(String[] args) { + final int COUNT = 5; + MyInputClass myThread1 = new MyInputClass(); + MyOutputClass myThread2 = new MyOutputClass("Hallo", COUNT); + MyOutputClass myThread3 = new MyOutputClass("Meti", COUNT); + myThread1.start(); + myThread2.start(); + myThread3.start(); + } +} + + -- GitLab