มันถูกใช้เพื่อให้เกิดการแลกเปลี่ยนข้อมูลระหว่างคนสองคน แลกเปลี่ยนข้อมูลกับสาระสำคัญซึ่งกันและกัน
คัดลอกรหัสรหัสดังนี้:
แพ็คเกจ com.ljq.test.thread;
นำเข้า java.util.concurrent.exchanger;
นำเข้า java.util.concurrent.executorservice;
นำเข้า java.util.concurrent.executors;
การแลกเปลี่ยนระดับสาธารณะ {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {{
ExecutorService Service = Executors.newCachedThreadPool ();
Exchange Exchange สุดท้าย = New Exchange ();
service.execute (ใหม่ runnable () {)
โมฆะสาธารณะเรียกใช้ () {
พยายาม {
สตริง data1 = "จางซาน";
System.out.println ("เธรด" + thread.currentthread (). getName () + "ตอนนี้กำลังหมุนข้อมูล '" + data1 + "' ออก");
thread.sleep ((ยาว) (math.random ()*10,000));
String data2 = (string) exchanger.exchange (data1);
System.out.println ("เธรด" + thread.currentthread (). getName () + "แทนที่ข้อมูลคือ '" + data2 + "'");
} catch (Exception e) {{
-
-
-
service.execute (ใหม่ runnable () {)
โมฆะสาธารณะเรียกใช้ () {
พยายาม {
String data1 = "li si";
System.out.println ("เธรด" + thread.currentthread (). getName () + "ตอนนี้กำลังหมุนข้อมูล '" + data1 + "' ออก");
thread.sleep ((ยาว) (math.random ()*10,000));
String data2 = (string) exchanger.exchange (data1);
System.out.println ("เธรด" + thread.currentthread (). getName () + "แทนที่ข้อมูลคือ '" + data2 + "'");
} catch (Exception e) {{
-
-
-
-
-
กลับผลลัพธ์:
คัดลอกรหัสรหัสดังนี้:
เธรดพูล-เธรด -1 กำลังแทนที่ 'จางซาน' ออกจากเธรดพูล -1-Thread-2 กำลังเปลี่ยนข้อมูลเป็นเธรดพูล-เธรด -1 ''
ข้อมูลของเธรด Pool-1-Thread-2 จะถูกแทนที่ด้วย 'Zhang San'