Ini digunakan untuk mencapai pertukaran data antara dua orang. bertukar data dengan esensi satu sama lain
Salin kode kode sebagai berikut:
paket com.ljq.test.thread;
Impor java.util.concurrent.exchanger;
Impor java.util.concurrent.executorservice;
Impor java.util.concurrent.Executors;
Kelas Publik Exchangrtest {
Public static void main (string [] args) {{{{{{{{
Layanan ExecutorService = Executors.NewCachedThreadPool ();
Exchange Exchange akhir = pertukaran baru ();
Service.execute (new runnable () {)
public void run () {
mencoba {
String data1 = "zhang san";
System.out.println ("Thread" + Thread.currentThread (). GetName () + "sekarang memutar data '" + data1 + "' out");
Thread.sleep ((long) (math.random ()*10000));
String data2 = (string) Exchanger.exchange (data1);
System.out.println ("Thread" + Thread.currentThread (). GetName () + "Data yang diganti adalah '" + data2 + "'");
} Catch (Exception e) {{
}
}
});
Service.execute (new runnable () {)
public void run () {
mencoba {
String data1 = "li si";
System.out.println ("Thread" + Thread.currentThread (). GetName () + "sekarang memutar data '" + data1 + "' out");
Thread.sleep ((long) (math.random ()*10000));
String data2 = (string) Exchanger.exchange (data1);
System.out.println ("Thread" + Thread.currentThread (). GetName () + "Data yang diganti adalah '" + data2 + "'");
} Catch (Exception e) {{
}
}
});
}
}
Hasil punggung:
Salin kode kode sebagai berikut:
Thread Pool-Thread-1 mengganti data 'Zhang San' dari utas Pool-1-Thread-2 mengubah data ke utas kumpulan-thread-1 '
Data Thread Pool-1-Thread-2 digantikan oleh 'Zhang San'