diff --git a/VL04_09/Programmende/.classpath b/VL04_09/Programmende/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1
--- /dev/null
+++ b/VL04_09/Programmende/.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/Programmende/.project b/VL04_09/Programmende/.project
new file mode 100644
index 0000000000000000000000000000000000000000..08fb4d9dc2f12bf9877934a2d4da428676c645a4
--- /dev/null
+++ b/VL04_09/Programmende/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ThreadProgrammende</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/Programmende/.settings/org.eclipse.jdt.core.prefs b/VL04_09/Programmende/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf
--- /dev/null
+++ b/VL04_09/Programmende/.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/Programmende/src/inf3/ThreadProgrammende.java b/VL04_09/Programmende/src/inf3/ThreadProgrammende.java
new file mode 100644
index 0000000000000000000000000000000000000000..07cd38c33c5218aaf92268b71905391dc9fdc6b2
--- /dev/null
+++ b/VL04_09/Programmende/src/inf3/ThreadProgrammende.java
@@ -0,0 +1,59 @@
+package inf3;
+/** Programm zur Demonstration des Verhaltens von Vordergrund- und 
+* Hintergrund-Threads bei Programmende 
+* 
+* <ul>
+* 	<li> Es soll gezeigt werden, in welchem Moment der Programmausführung
+* 		 der Daemon-Thread automatisch gestoppt wird.</li>
+*   <li> Es zeigt sich, dass das Programm erst dann zu Ende ist, wenn alle
+*        User Threads beendet sind. Erst dann wird der Daemon zerstört. Dies
+*        geschieht hier nicht bereits mit dem Ende von main().</li> 
+* </ul>
+*
+* @author Steddin
+* @version 1.01, 2020-01-06
+* @version 1.00, 2019-01-18
+*/
+public class ThreadProgrammende {
+	/** Hauptprogramm startet einen Daemon-Thread und 2 User-Thread
+	 * @param args Runntimeparameter werden nicht genützt
+	 * @author Sven Steddin
+	 */
+
+	public static void main(String[] args) {
+		System.out.println("main-Thread gestartet ...");
+		MyThread mythread1 = new MyThread(1);
+		MyThread mythread2 = new MyThread(2);
+		mythread2.setDaemon(true);
+		mythread1.start();
+		mythread2.start();
+		System.out.println("main-Thread beendet (Programmende?)");
+	}
+}
+
+/** Thread zeigt unterschiedliches Verhalten, je nachdem, ob er als user thread oder 
+ * als daemon thread erzeugt wird 
+ * @author stedS
+ */
+class MyThread extends Thread {
+	int idx; 		/** Kennnummer des Threads */  
+	int cnt = 0;	/** Anzahl der Aufrufe des Threads */
+	MyThread (int idx) {
+		this. idx = idx;
+	}
+	public void run() {
+		while(true) {
+			String t = this.isDaemon() ? "Daemon" : "Normal";
+			System.out.println("Thread "+idx+" ["+t+"] : "+ ++cnt +". Durchlauf");
+			if (!this.isDaemon() && (cnt>10))  {
+				System.out.println("Thread "+idx+" ["+t+"] : Abbruch");
+				System.out.println("Läuft der Daemon weiter?");
+				break;
+			}
+			try {
+				sleep(600);	// was passiert, wenn sleep() nicht aufgerufen wird?
+								// ... lässt sich nicht direkt vorhersagen --> ausprobieren!
+			} catch (InterruptedException e) { e.printStackTrace(); }
+		}
+	}
+}
diff --git a/VL04_09/ThreadDurchVererbung_0/src/MyThreads/ThreadDurchVererbung_0.java b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/ThreadDurchVererbung_0.java
index 7680691ab0bc63bbd94e736a3f1d752fa38e8dfb..3a2c016aedc43a3375640ae9bee7d3d80824ec46 100644
--- a/VL04_09/ThreadDurchVererbung_0/src/MyThreads/ThreadDurchVererbung_0.java
+++ b/VL04_09/ThreadDurchVererbung_0/src/MyThreads/ThreadDurchVererbung_0.java
@@ -16,7 +16,7 @@ public class ThreadDurchVererbung_0 {
 	/** Thread startet weiteren Thread zum Einlesen von Zahlen über die Tastatur und 
 	 * gibt anschließend Sternchen auf dem Bildschirm aus.
 	 * @param args Keine Auswertung von Runtimeparametern
-	 * @author Steddinzur Ausgabe von Sternchen auf dem Display 
+	 * @author Steddin
 	 */
 	public static void main(String[] args) {
 		MyThreadClass myThread = new MyThreadClass();
diff --git a/VL04_09/ThreadDurchVererbung_2_Daemon/.classpath b/VL04_09/ThreadDurchVererbung_2_Daemon/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..63b7e892d1ebf1eeb9df3d8d71e5bedb134487c1
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/.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_2_Daemon/.project b/VL04_09/ThreadDurchVererbung_2_Daemon/.project
new file mode 100644
index 0000000000000000000000000000000000000000..ae81e8fc5b6833664a090714fcc80e331b699ba0
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>ThreadDurchVererbung_2_Daemon</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_2_Daemon/.settings/org.eclipse.jdt.core.prefs b/VL04_09/ThreadDurchVererbung_2_Daemon/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..bb35fa0a87b032ee9d0b128004c1edbd464f07bf
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/.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_2_Daemon/src/MyThreads/MyInputClass.java b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/MyInputClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..6839a9a995895c179c4de75feba18538c013c70a
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/MyInputClass.java
@@ -0,0 +1,18 @@
+package MyThreads;
+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);	
+			if (ii>999) break;
+		}
+	}
+}
+
+
+
diff --git a/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/MyOutputClass.java b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/MyOutputClass.java
new file mode 100644
index 0000000000000000000000000000000000000000..e5fd3d1b6fffa3fe313caab2d80a42cc71b6cc8c
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/MyOutputClass.java
@@ -0,0 +1,20 @@
+package MyThreads;
+
+public class MyOutputClass extends Thread {
+	private String text;
+	
+	MyOutputClass(String text)
+	{
+		this.text = text;
+	}
+	
+	public void run() {
+		long kk = 0;
+		while (true) {
+			if (kk++ % 10000000 == 0) {
+				System.out.println(text + " ");
+			}
+		}		
+	}
+}
+
diff --git a/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/ThreadDurchVererbung_2_Daemon.java b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/ThreadDurchVererbung_2_Daemon.java
new file mode 100644
index 0000000000000000000000000000000000000000..fa1d44cd175319c41134e12ba6c38986951d96a7
--- /dev/null
+++ b/VL04_09/ThreadDurchVererbung_2_Daemon/src/MyThreads/ThreadDurchVererbung_2_Daemon.java
@@ -0,0 +1,26 @@
+/** Programm zur Demonstration der Abhängigkeit von Hintergrund Threads
+ * und Vordergrund-Threads. 
+ * 
+ * @version 1.0 (2017-01-12) 
+ */
+package MyThreads;
+public class ThreadDurchVererbung_2_Daemon {
+	/** Durch Auskommentieren des Befehls zum Setzen von Daemon Threads
+	 * kann das Verhalten des Programms untersucht werden.
+	 * @param args Runntimeparameter nicht genutzt
+	 * @author stedS
+	 */
+	public static void main(String[] args) {
+		MyInputClass myThread1 = new MyInputClass();
+		MyOutputClass myThread2 = new MyOutputClass("Hallo");
+		MyOutputClass myThread3 = new MyOutputClass("Meti");
+		//myThread2.setDaemon(true);
+		//myThread3.setDaemon(true);
+		myThread1.start();
+		myThread2.start();		
+		myThread3.start();
+	}
+}
+
+
+//System.exit(3); //kann verwendet werden, um Programm endgültig abzuschießen
\ No newline at end of file