Drei Möglichkeiten zur Implementierung von Multi-Threading in Java
In Java gibt es drei Möglichkeiten, Multi-Threading zu implementieren. Die erste Methode: Erben Sie die Thread -Klasse und überschreiben Sie die Run -Funktion. Die zweite Methode: Implementieren Sie die Runnable -Schnittstelle und schreiben Sie die Run -Funktion neu. Die dritte Methode: Implementieren Sie die Callable -Schnittstelle und überschreiben Sie die Anruffunktion. In diesem Artikel wird erläutert, wie diese drei Methoden anhand von Beispielen implementiert werden können. Wenn Sie es benötigen, beziehen Sie sich bitte darauf.
(1) Erben Sie die Thread -Klasse und überschreiben Sie die Run -Funktion.
Klasse XX erweitert Thread {public void run () {thread.sleep (1000) // Der Thread schläft für 1000 Millisekunden. Der Schlaf führt dazu Thread starten:
Object.Start () // Starten Sie den Thread und führen Sie die Auslauffunktion aus
(2) Implementieren Sie die Runnable -Schnittstelle, der Code ist wie folgt
Klasse myThread implementiert runnable {private Zeichenfolge Name; public myThread (String name) {Super (); this.name = name; } @Override public void run () {für (int i = 0; i <200; i ++) {System.out.println ("Thread"+name+"--->"+i); }}} public class ThreadDemo {public static void main (String [] args) {myThread a = new MyThread ("a"); MyThread B = neuer MyThread ("B"); MyThread C = New MyThread ("C"); neuer Thread (a) .Start (); neuer Thread (b) .Start (); neuer Thread (c) .Start (); }}(3) Implementieren Sie die Callable -Schnittstelle und schreiben Sie die Anruffunktion um
Callable ist eine Schnittstelle ähnlich wie Runnable. Die Klassen, die die Callable -Schnittstelle implementieren, und die Klassen, die die Runnable implementieren, sind Aufgaben, die von anderen Threads ausgeführt werden können.
Es gibt verschiedene Unterschiede zwischen Callable und Runnable:
Beispiel für Java Callable Code:
class TaskWithresult implementiert CALLABLE <string> {private int id; public TaskWithresult (int id) {this.id = id; } @Override public String call () löst Ausnahme aus {return "Ergebnis von TaskWithresult" + id; }} public class callabletest {public static void main (String [] args) löst InterruptedException, executionException aus {ausführungsservice exec = ausführende.newcachedThreadpool (); ArrayList <Future <String >> resultation = new ArrayList <Future <String >> (); // Zukunft entspricht einem Container, mit dem die Ergebnisse der Ausführung von Executor für (int i = 0; i <10; i ++) {results.add (exec.Submit (neuer Taskwithresult (i))) gespeichert werden. } für (Future <String> fs: Ergebnisse) {if (fs.isdone ()) {System.out.println (fs.get ()); } else {System.out.println ("zukünftiges Ergebnis ist noch nicht vollständig"); }} exec.shutdown (); }}Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!