ตัวอย่างของบทความนี้บอกการใช้การซิงโครไนซ์เธรด Java แบ่งปันสำหรับทุกคนสำหรับการอ้างอิงของคุณ การวิเคราะห์เฉพาะมีดังนี้:
การใช้หลายเธรดให้ความสะดวกสบายมากมายสำหรับขั้นตอนของเราและมันยังนำปัญหาที่เราไม่เคยพิจารณามาก่อน เมื่อเราใช้ทรัพยากรที่ใช้ร่วมกันหลายเธรดอุบัติเหตุจะเกิดขึ้น: ตัวอย่างเช่นเราออกไปกินด้วยกันทุกคนเป็นด้ายและอาหารบนโต๊ะเป็นทรัพยากรที่ใช้ร่วมกัน เห็นเป้าหมายเมื่อฉันเห็นมันทันใดนั้นฉันก็ ~~~ ขาไก่หายไปและด้ายใกล้กับจานก็ถือมันอย่างภาคภูมิใจ
เพื่อหลีกเลี่ยงปัญหาที่เกิดขึ้นข้างต้น Java ให้เราด้วย "การซิงโครไนซ์ (ซิงโครไนซ์) ตัวดัดแปลง" เพื่อหลีกเลี่ยงความขัดแย้งของทรัพยากร เครื่องล็อค (ล็อค) ซึ่งมีอยู่ตลอดชีวิตที่เหลือของเขาและไม่จำเป็นต้องเขียนรหัสใด ๆ เพื่อเปิดใช้งาน เมื่อเราเรียกฟังก์ชั่นใด ๆ ที่ซิงโครไนซ์วัตถุจะถูกล็อคและฟังก์ชั่นซิงโครไนซ์ทั้งหมดในวัตถุไม่สามารถเรียกได้จนกว่าฟังก์ชั่นแรกจะถูกดำเนินการและปลดล็อค
นำเข้า java.awt.borderlayout; javax.swing.jtextarea; นำเข้า Javax.swing.jtextfield;/*** การซิงโครไนซ์เธรด*เราจำลองขั้นตอนการจัดเก็บของธนาคารเพื่อพิสูจน์ความจำเป็นของการซิงโครไนซ์เธรดใน Java* บัญชีจำนวนเงินฝากของธนาคารจะแสดงโดยจำนวนเงินฝากธนาคารเพื่อแสดง textarea xtarea ส่วนตัว = null; อินเทอร์เฟซการถอนเงินของธนาคาร*/ Public Testmain5 () {super ("การทดสอบการซิงโครไนซ์เธรด"); = new Jtextarea (); ("หอคอยนาฬิกาย่อย", MyAccounts, Bank.dea L_saving, 800); MyAccounts, Bank.deal_Fetch, 200); "Tugen Sub -Branch", MyAccounts, Bank.deal_Fetch, 700);}); SPD (SPD (SP); .EXIT_ON_CLOSE); ฟีเจอร์*/ Class Bank ขยายเธรด {/ *** ฟิลด์คงที่: มันถูกใช้เพื่อระบุที่เก็บข้อมูล*/ สาธารณะคงที่สุดท้ายลงใน defining_saving = 0;/ *** ฟิลด์คงที่: มันถูกใช้เพื่อระบุการสกัดของ*/ สาธารณะ คงที่ * @param myAccounts บัญชีธนาคารของฉัน* @param พฤติกรรมซื้อ, ฟิลด์อ้างอิง: Dead_saving หรือ defer_fetch* @param จำนวนเงินหมายเลขเงิน*/ ธนาคารสาธารณะ (ชื่อสตริง, myAccounts myAccounts, ใน t ซื้อ, int จำนวน) {super (ชื่อ); . เงินฝากธุรกิจ $ count = myAccounts.saving (นับ);} อื่นถ้า (ซื้อ == bankal_fetch) {// ถ้ามันเป็นธุรกิจการถอน $ count = myAccounts.fetch (นับ);} text.settext (integer.toString ($ count ); = 1100; หลังจากเสร็จสิ้น* / การออมสาธารณะ (int c) {ซิงโครไนซ์ (นับ) {// กลับมานับ += c; ก่อนที่จะตรวจสอบเงินฝากในบัญชี $ count += c; {Ex.PrintStackTrace ();} count = $ count; {ซิงโครไนซ์ (นับ) {// return countt -= c; c; ลอง {thread.sleep (1,000 1000); หมายเลขเงินฝาก}}} โมฆะคงที่สาธารณะหลัก (สตริง [] args) {ใหม่ testMain5 ();}}หวังว่าบทความนี้จะเป็นประโยชน์กับการออกแบบโปรแกรม Java ของทุกคน