Skip to content

Instantly share code, notes, and snippets.

@heckenmann
Created March 15, 2015 08:56
Show Gist options
  • Save heckenmann/ebe00b36ab49344d7e13 to your computer and use it in GitHub Desktop.
Save heckenmann/ebe00b36ab49344d7e13 to your computer and use it in GitHub Desktop.
Neue Threads in Java starten
package de.heckenmann.threadbeispiel;
public class ThreadBeispiel implements Runnable {
public static void main(final String... args) throws InterruptedException {
// Neue Threads definieren. Es wird ein Runnable-Objekt übergeben.
final Thread t1 = new Thread(new ThreadBeispiel());
final Thread t2 = new Thread(new ThreadBeispiel());
// Threads starten
t1.start();
t2.start();
// Laufen die Threads?
checkThread(t1);
checkThread(t2);
// Gleiche Aktion ausführen wie die Threads, um Nebenläufigkeit zum main-Thread zu zeigen.
for (int i = 0; i < 5; i++) {
warteUndSchreibe();
}
// Threads stoppen (ist nur nötig, weil in ihnen eine Endlosschleife läuft)
t1.interrupt();
t2.interrupt();
// Meistens sind die Threads an dieser Stelle noch aktiv.
checkThread(t1);
checkThread(t2);
// interrupt() blockiert nicht. Deshalb muss man auf die Threads warten, bevor man prüft, ob sie noch laufen.
t1.join();
t2.join();
// Laufen die Threads?
checkThread(t1);
checkThread(t2);
}
/**
* Status des übergebenen Threads ausgeben.
*/
private static void checkThread(final Thread t) {
if (t.isAlive()) {
System.out.println(t.getName() + " läuft.");
} else {
System.out.println(t.getName() + " läuft NICHT.");
}
}
/**
* Wartet 1000 ms und gibt danach den Namen des Threads aus.
*/
private static void warteUndSchreibe() throws InterruptedException {
Thread.sleep(1000);
System.out.println(Thread.currentThread().getName());
}
/**
* Dieser Teil wird in einem anderen Thread ausgeführt.
*/
@Override
public void run() {
try {
while (true) {
warteUndSchreibe();
}
} catch (final InterruptedException e) {
System.err.println(Thread.currentThread().getName() + " gekillt.");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment