บทความนี้ส่วนใหญ่ศึกษาการใช้ตัวแลกเปลี่ยนเครื่องมือซิงโครไนซ์การเขียนโปรแกรมการเขียนโปรแกรม Java มาดูเนื้อหาเฉพาะด้านล่าง
หากสองเธรดจำเป็นต้องแลกเปลี่ยนข้อมูลจากกันและกันระหว่างการทำงานเช่นข้อมูลหรือพื้นที่ที่ใช้พวกเขาจำเป็นต้องใช้คลาส Exchange Exchanger เป็นวิธีที่สะดวกมากสำหรับเธรดในการแลกเปลี่ยนข้อมูล มันสามารถใช้เป็นจุดซิงโครไนซ์สำหรับสองเธรดเพื่อแลกเปลี่ยนวัตถุ เฉพาะเมื่อแต่ละเธรดเข้าสู่วิธี exchange () และให้วัตถุสามารถยอมรับวัตถุที่ได้รับเมื่อเธรดอื่นกลับมา
มีเพียงสองเธรดเท่านั้นที่สามารถแลกเปลี่ยนข้อมูลได้ครั้งละ หากมีหลายเธรดมีเพียงสองตัวเท่านั้นที่สามารถแลกเปลี่ยนข้อมูลได้ มาดูตัวอย่างทั่วไป: จับมือและส่งมอบสินค้าด้วยเพลงเดียว!
การแลกเปลี่ยนระดับสาธารณะ {public Static Void Main (String [] args) {ExecutorService Service = Executors.newCachedThreadPool (); Executanter Exchanger Exchanger = New Exchanger (); // define วัตถุแลกเปลี่ยนเพื่อแลกเปลี่ยนข้อมูล // เปิดเธรด "เฮโรอีน"; System.out.println ("เธรด" + เธรด. (String) Exchanger.exChange (DATA1); System.out.println ("Thread" + Thread.currentThread (). getName () + "swap Heroin สำหรับการแลกเปลี่ยน" + data2);} catch (exception e) {} {service.shutdown (service.shutdown (); Service.execute (ใหม่ runnable () {@@Override Public Public Void Run () {ลอง {String data1 = "3 ล้าน"; System.out.println ("Thread" + Thread.currentthread (). getName () + " (String) Exchanger.exChange (data1); System.out.println ("เธรด" + เธรด. currentthread (). getName () + "ได้รับ 3 ล้าน" + data2);} catch (Exception e) {} ในที่สุด {service.shutdown (); เฮโรอีน! ");}}});}});}});}});}});}}จากรหัสฉันดูเหมือนจะเห็นคนสองคนซื้อยาเสพติด ... มาดูกันว่าผลการทำธุรกรรมเป็นอย่างไร:
Thread Pool-1-Thread-1 กำลังนำเฮโรอีนยาออกมา Thread Pool-1-Thread-2 กำลังออก 3 ล้าน Thread Pool-1-Thread-2 กำลังรับเฮโรอีนเธรด Pool-1-Thread-1 สำหรับการแลกเปลี่ยนเฮโรอีนเป็นเวลา 3 ล้าน การทำธุรกรรมเสร็จสมบูรณ์ ใช้เฮโรอีนแล้ววิ่งอย่างรวดเร็ว!
หลังจากการทำธุรกรรมสิ้นสุดลงแล้ววิ่งหนีไปด้วยเงิน!
มันทำงานเร็ว เมื่อพิจารณาจากผลการดำเนินงานจะตระหนักถึงการแลกเปลี่ยนข้อมูล นี่เป็นเพียงการแลกเปลี่ยนประเภทข้อมูลพื้นฐาน การใช้งานจริงไม่ จำกัด เฉพาะสิ่งนี้ ตัวอย่างเช่นเราสามารถแลกเปลี่ยนวัตถุซึ่งมีประโยชน์ JDK กล่าวถึงแอปพลิเคชันระดับสูงอย่างเป็นทางการ:
ใช้ตัวแลกเปลี่ยนเพื่อแลกเปลี่ยนบัฟเฟอร์ระหว่างเธรดดังนั้นเมื่อจำเป็นเธรดที่เติมบัฟเฟอร์จะได้รับบัฟเฟอร์ที่ว่างใหม่และส่งบัฟเฟอร์ที่กรอกไปยังเธรดที่ว่างบัฟเฟอร์
สิ่งนี้จะต้องขึ้นอยู่กับสถานการณ์จริง ความคิดเหมือนกันข้างต้น ในความเป็นจริงคุณต้องกำหนดคลาสบัฟเฟอร์จากนั้นคลาสของบัฟเฟอร์นี้จะถูกแลกเปลี่ยนระหว่างสองเธรด สำหรับวิธีการใช้งานในชั้นเรียนมันขึ้นอยู่กับสถานการณ์จริง นั่นคือทั้งหมดสำหรับการใช้เครื่องแลกเปลี่ยน ~
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการวิเคราะห์อินสแตนซ์การใช้งานของตัวแลกเปลี่ยนเครื่องมือซิงโครไนซ์การเขียนโปรแกรมการเขียนโปรแกรม Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!