Skip to content
Snippets Groups Projects
Commit a3d4539e authored by Sven Steddin's avatar Sven Steddin
Browse files

Projektumfang erweitert (ThreadRunnableMitLambda)

parent c25cf9cb
No related branches found
No related tags found
No related merge requests found
<?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>
<?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>
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
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);
}}}
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(); }
}
}
}
package inf3;
/** Programm zur Demonstration der bergabe eines Lambda Ausdrucks an
* den Konstruktor eines Threads anstelle eines Objekts, welches das Interface
* Runnable untersttzt. 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 krzer 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();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment