Heim  >  Artikel  >  Java  >  Einführung in die Verwendung der Join-Methode in Java-Threads

Einführung in die Verwendung der Join-Methode in Java-Threads

黄舟
黄舟Original
2016-12-19 14:39:441558Durchsuche

Im obigen Beispiel wird die Join-Methode der Thread-Klasse häufig verwendet. Ich denke, Sie haben vielleicht schon erraten, welche Funktion die Join-Methode hat. Ja, die Funktion der Join-Methode besteht darin, den asynchronen Ausführungsthread in eine synchrone Ausführung umzuwandeln. Das heißt, wenn die Startmethode der Thread-Instanz aufgerufen wird, kehrt diese Methode sofort zurück. Wenn Sie nach dem Aufruf der Startmethode einen von diesem Thread berechneten Wert verwenden müssen, müssen Sie die Join-Methode verwenden. Wenn Sie die Join-Methode nicht verwenden, gibt es keine Garantie dafür, dass der Thread ausgeführt wird, wenn eine Anweisung nach der Startmethode ausgeführt wird. Nach Verwendung der Join-Methode setzt das Programm die Ausführung erst fort, wenn dieser Thread beendet wird.
Der folgende Code demonstriert die Verwendung von Join.

package mythread;

 public class JoinThread extends Thread
 {
     public static volatile int n = 0;

     public void run()
     {
         for (int i = 0; i < 10; i++, n++)
             try
             {
                 sleep(3);  // 为了使运行结果更随机,延迟3毫秒
             }
             catch (Exception e)
             {
             }                                      
     }
     public static void main(String[] args) throws Exception
     {
         Thread threads[] = new Thread[100];
         for (int i = 0; i < threads.length; i++)  // 建立100个线程
             threads[i] = new JoinThread();
         for (int i = 0; i < threads.length; i++)   // 运行刚才建立的100个线程
             threads[i].start();
         if (args.length > 0)  
             for (int i = 0; i < threads.length; i++)   // 100个线程都执行完后继续
                 threads[i].join();
         System.out.println("n=" + JoinThread.n);
     }
 }

In Routine 2-8 werden 100 Threads erstellt, und jeder Thread erhöht die statische Variable n um 10. Wenn n ausgegeben wird, nachdem alle 100 Threads ausgeführt wurden, sollte der n-Wert 1000 sein.


1. Test 1

Verwenden Sie den folgenden Befehl, um das obige Programm auszuführen:

1 java mythread.JoinThread

Die Ausführungsergebnisse des Programms sind wie folgt folgt:

1 n=442


Dieses Laufergebnis kann in verschiedenen Laufumgebungen einige Unterschiede aufweisen, aber im Allgemeinen ist n nicht gleich 1000. Aus den obigen Ergebnissen geht hervor, dass nicht alle 100 Threads ausgeführt wurden . Dann wird n ausgegeben.


2. Test 2

Verwenden Sie den folgenden Befehl, um den obigen Code auszuführen:

Der obige Befehl enthält einen Parameter-Join line Tatsächlich kann jeder Parameter in der Befehlszeile verwendet werden, solange es einen Parameter gibt. Join wird hier nur verwendet, um anzugeben, dass die Join-Methode zum Synchronisieren der Ausführung dieser 100 Threads verwendet wird.

Die Ausführungsergebnisse des Programms lauten wie folgt:

1 n=1000

Unabhängig davon, in welcher Betriebsumgebung Sie den obigen Befehl ausführen, erhalten Sie das gleiche Ergebnis: n=1000. Dies wird vollständig veranschaulicht Die 100 Alle Threads müssen ausgeführt worden sein, daher muss n gleich 1000 sein.

Das Obige ist eine Einführung in die Verwendung der Join-Methode von Java-Threads. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn