Il est utilisé pour réaliser un échange de données entre deux personnes. échanger les données entre elles
Copier le code du code comme suit:
package com.ljq.test.thread;
Import java.util.concurrent.exchanger;
Importer java.util.concurrent.executorService;
Importer java.util.concurrent.executors;
classe publique ExchangrTest {
Public static void main (String [] args) {{{
ExecutorService Service = exécutor.NewCachedThreadPool ();
Exchange final Exchange = new Exchange ();
Service.execute (new Runnable () {)
public void run () {
essayer {
String data1 = "Zhang san";
System.out.println ("thread" + thread.currentThread (). GetName () + "tourne maintenant les données" + data1 + "'out");
Thread.Sleep ((long) (math.random () * 10000));
String data2 = (String) Exchanger.Exchange (data1);
System.out.println ("thread" + thread.currentThread (). GetName () + "Les données remplacées sont '" + data2 + "'");
} Catch (exception e) {{
}
}
});
Service.execute (new Runnable () {)
public void run () {
essayer {
String data1 = "li si";
System.out.println ("thread" + thread.currentThread (). GetName () + "tourne maintenant les données" "+ data1 +" 'out ");
Thread.Sleep ((long) (math.random () * 10000));
String data2 = (String) Exchanger.Exchange (data1);
System.out.println ("thread" + thread.currentThread (). GetName () + "Les données remplacées sont '" + data2 + "'");
} Catch (exception e) {{
}
}
});
}
}
Résultats du dos:
Copier le code du code comme suit:
Le thread pool-thread-1 remplace les données «Zhang San» à partir du thread pool-1-thread-2 modifie les données en thread pool-thread-1 »
Les données du thread pool-1-thread-2 sont remplacées par «Zhang San»