Multithreading

Beim Multithreading wird das Programm in einzelne Threads unterteilt. Jeder Thread steht für einen Programmstrang der eine bestimmte Aufgabe erfüllt und möglichst gleichzeitig mit den anderen Programmsträngen ausgeführt werden soll. Z. B. könnte man in einem Weltraumspiel jedes Raumschiff in einen eigenen Thread packen.

Multithreading ermöglicht es auch modernen Betriebssystemen, die einzel­nen Programm­stränge auf mehrere eventuell vorhandene Prozessorkerne aufzuteilen.

Merke: Ein Programm ist ein Prozess. Ein Thread ist eine Untereinheit eines Programms bzw. Prozesses.

public class Multithreading {

 public static void main(String[] args) /* throws InterruptedException */ {
 
  Thread thread1 = new Thread( new Klasse1() );
  Thread thread2 = new Thread( new Klasse2() );
  Thread thread3 = new Klasse3();

  thread1.start();
  thread2.start();
  thread3.start();
//  Thread.sleep(3000);
//  thread3.interrupt();
 }
}

class Klasse1 implements Runnable {
 @Override
 public void run() {
  for (int i = 0; i <= 100; i++) {
   System.out.println("Thread 1: " + i);
  }
 }
}

class Klasse2 implements Runnable {
 @Override
 public void run() {
  for (int i = 0; i <= 100; i++) {
   System.out.println("Thread 2: " + i);
  }
 }
}

class Klasse3 extends Thread {
 int i = 0;
 @Override
 public void run() {
  for (int i = 0; i <= 100; i++) {
   System.out.println("Thread 3: " + i);
  }
 }
}

Das Beispiel macht aus drei Klassen drei Prozesse. Wenn wir das Beispiel mehrmals starten, sieht man das nicht immer Prozess 1 zuerst gestartet wird. Das liegt daran ob der Prozessor in der Millisekunde in der der Befehl ausgeführt wird gerade mit etwas anderem beschäftigt ist oder nicht. Daher kann es sein das ein anderer Thread zuerst gestartet wird.