From a3d4539e84854d81464273e14293bfcdc69fafc0 Mon Sep 17 00:00:00 2001 From: stedS <sven.steddin@reutlingen-university.de> Date: Sun, 26 Jan 2020 21:51:05 +0100 Subject: [PATCH] Projektumfang erweitert (ThreadRunnableMitLambda) --- VL04_09/ThreadRunnableMitLambda/.classpath | 10 +++++ VL04_09/ThreadRunnableMitLambda/.project | 17 ++++++++ .../.settings/org.eclipse.jdt.core.prefs | 14 +++++++ .../src/inf3/MyInputClass.java | 17 ++++++++ .../src/inf3/MyOutputClass.java | 23 +++++++++++ .../src/inf3/ThreadRunnableMitLambda.java | 40 +++++++++++++++++++ 6 files changed, 121 insertions(+) create mode 100644 VL04_09/ThreadRunnableMitLambda/.classpath create mode 100644 VL04_09/ThreadRunnableMitLambda/.project create mode 100644 VL04_09/ThreadRunnableMitLambda/.settings/org.eclipse.jdt.core.prefs create mode 100644 VL04_09/ThreadRunnableMitLambda/src/inf3/MyInputClass.java create mode 100644 VL04_09/ThreadRunnableMitLambda/src/inf3/MyOutputClass.java create mode 100644 VL04_09/ThreadRunnableMitLambda/src/inf3/ThreadRunnableMitLambda.java diff --git a/VL04_09/ThreadRunnableMitLambda/.classpath b/VL04_09/ThreadRunnableMitLambda/.classpath new file mode 100644 index 0000000..d986294 --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/.classpath @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk-13"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/VL04_09/ThreadRunnableMitLambda/.project b/VL04_09/ThreadRunnableMitLambda/.project new file mode 100644 index 0000000..0849fb3 --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ThreadRunnableMitLambda</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/ThreadRunnableMitLambda/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadRunnableMitLambda/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..2b084d8 --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=12 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=12 +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.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=12 diff --git a/VL04_09/ThreadRunnableMitLambda/src/inf3/MyInputClass.java b/VL04_09/ThreadRunnableMitLambda/src/inf3/MyInputClass.java new file mode 100644 index 0000000..526ee6f --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/src/inf3/MyInputClass.java @@ -0,0 +1,17 @@ +package inf3; +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/ThreadRunnableMitLambda/src/inf3/MyOutputClass.java b/VL04_09/ThreadRunnableMitLambda/src/inf3/MyOutputClass.java new file mode 100644 index 0000000..bc0980c --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/src/inf3/MyOutputClass.java @@ -0,0 +1,23 @@ +package inf3; +/** Der Thread gibt im 500ms Takt Sternchen auf der Konsole aus + * und erzeugt nach jedem 10. Sternchen einen Zeilenumbruch. + * @author stedS + */ +public class MyOutputClass implements Runnable { + public void run() { + int ll = 0; + while (true) { + if (ll++ %10 != 0) { + System.out.print("*"); + } else { + System.out.println(); + } + try { Thread.sleep(500); + } catch (InterruptedException e) { e.printStackTrace(); } + } + } +} + + + + diff --git a/VL04_09/ThreadRunnableMitLambda/src/inf3/ThreadRunnableMitLambda.java b/VL04_09/ThreadRunnableMitLambda/src/inf3/ThreadRunnableMitLambda.java new file mode 100644 index 0000000..06c84df --- /dev/null +++ b/VL04_09/ThreadRunnableMitLambda/src/inf3/ThreadRunnableMitLambda.java @@ -0,0 +1,40 @@ +package inf3; +/** Programm zur Demonstration der Übergabe eines Lambda Ausdrucks an +* den Konstruktor eines Threads anstelle eines Objekts, welches das Interface +* Runnable unterstützt. Durch die Verwendung eines Lambda-Ausdrucks, der die +* Methode run() darstellt, kann man sich die Definition einer eigenen +* Klasse, welche das Interface Runnable implementiert, sparen. Der Code +* wird somit kürzer und besser lesbar. +* +* <ul> +* <li> myThread1 wird durch die Übergabe eines Runnable Objekts erzeugt. Dieses +* Object (myRunnable) muss zuvor angelegt werden und es muss die Klasse +* MyOutputClass definiert werden, welche die Methode run() implementiert </li> +* <li> myThread2 wird erstellt, indem anstelle des Runnable-Objects die run() +* Methode direkt als Lambda-Ausdruck an den Thread-Konstruktor übergeben wird.</li> +* </ul> +* +* @author Steddin +* @version 1.00, 2020-01-26 (Steddin) Erstausgabe +*/ + +public class ThreadRunnableMitLambda { + public static void main(String[] args) { + + //Objekt anlegen, welches Runnable impl. und an Thread-Object übergeben wird + MyOutputClass myRunnable = new MyOutputClass(); + //Thread-Objekt erzeugen und Runnable-Object übergeben + Thread myThread1 = new Thread(myRunnable); + //Thread-Object erzeugen und statt Runnable-Object "Lambda-Ausdruck" übergeben + Thread myThread2 = new Thread ( + () -> { while (true) { + System.out.print("+"); + try { Thread.sleep(500); + } catch (InterruptedException e) { e.printStackTrace(); } + } + } ); + myThread1.start(); + myThread2.start(); + } +} + -- GitLab