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();
+	}
+}
+
+