diff --git a/VL04_04/CallByRefArray-C/bin/.gitignore b/VL04_04/CallByRefArray-C/bin/.gitignore deleted file mode 100644 index e7d460ab01cd4b6585eb074699ade50e60aa467f..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..69c4e94f17da642d1b2fd9b7463f0c4c1f07cb62 --- /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 0000000000000000000000000000000000000000..3850d237ea6c1b8bc0ffd5a85073080215c993c8 --- /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 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf --- /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 0000000000000000000000000000000000000000..24315d3352123b78999655747ac20a82169fb56e --- /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 0000000000000000000000000000000000000000..0bca1564baad325f1899a4086dabdfdd3292d99c --- /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 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1 --- /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 0000000000000000000000000000000000000000..cb9ea8688dc6a26154c1e0fbea87636b0359814b --- /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 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf --- /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 0000000000000000000000000000000000000000..6d61d69fe6659f41e0d54e94c5d63e080c4338bf --- /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 0000000000000000000000000000000000000000..ea4540a141b5216a67b735abd1b467fb69c73165 --- /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 0000000000000000000000000000000000000000..40c3ad0fdda0bb969377a98b14cb7b125a91534b --- /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(); + } +} + +