วิธีการติดตั้ง Volatile Keyword ใน Java



Java เป็นโปรแกรมหนึ่งที่มีคุณสมบัติมากมาย ในบทความนี้เราจะมาดูคุณสมบัติดังกล่าวซึ่งเป็นคำสำคัญที่เปลี่ยนแปลงได้ใน Java

เป็นโปรแกรมหนึ่งที่เต็มไปด้วยคุณสมบัติมากมาย ในบทความนี้เราจะมาดูคุณสมบัติดังกล่าวซึ่งเป็นคำสำคัญที่เปลี่ยนแปลงได้ใน Java คำแนะนำต่อไปนี้จะกล่าวถึงในบทความนี้

ไปต่อกับบทความนี้เกี่ยวกับ Volatile Keyword ใน Java





คำสำคัญที่เปลี่ยนแปลงได้ถูกใช้เพื่อแก้ไขค่าของตัวแปรตามเธรดที่แตกต่างกัน นอกจากนี้ยังใช้เพื่อทำให้ชั้นเรียนปลอดภัย หมายความว่าเธรดหลายเธรดสามารถใช้เมธอดและอินสแตนซ์ของคลาสพร้อมกันได้โดยไม่มีปัญหา คำสำคัญที่ลบเลือนสามารถใช้ได้กับประเภทดั้งเดิมหรือวัตถุ

ตัวอย่าง

การทดสอบคลาส {static int var = 5}

ในตัวอย่างข้างต้นสมมติว่าสองเธรดกำลังทำงานบนคลาสเดียวกัน เธรดทั้งสองทำงานบนโปรเซสเซอร์ที่แตกต่างกันโดยที่แต่ละเธรดมีสำเนาของ var ในเครื่อง หากเธรดใด ๆ แก้ไขค่าการเปลี่ยนแปลงจะไม่แสดงในเธรดดั้งเดิมในหน่วยความจำหลัก นำไปสู่ความไม่สอดคล้องกันของข้อมูลเนื่องจากเธรดอื่นไม่ทราบถึงค่าที่แก้ไข



การทดสอบคลาส {static volatile int var = 5}

ในตัวอย่างข้างต้นตัวแปรคงคือสมาชิกคลาสที่ใช้ร่วมกันระหว่างออบเจ็กต์ทั้งหมด มีเพียงสำเนาเดียวในหน่วยความจำหลัก ค่าของตัวแปรระเหยจะไม่ถูกเก็บไว้ในแคช การอ่านและเขียนทั้งหมดจะดำเนินการจากและไปยังหน่วยความจำหลัก

ไปต่อกับบทความนี้เกี่ยวกับ Volatile Keyword ใน Java

ความแตกต่างระหว่างการซิงโครไนซ์และคีย์เวิร์ดที่ระเหยได้

คีย์เวิร์ดระเหยไม่ได้ใช้แทนคีย์เวิร์ดที่ซิงโครไนซ์ แต่สามารถใช้แทนคีย์เวิร์ดได้ในบางกรณี มีความแตกต่างดังต่อไปนี้:



java สองครั้งเป็น int รอบ
คีย์เวิร์ดระเหย คีย์เวิร์ดการซิงโครไนซ์
Volatile keyword คือตัวปรับเปลี่ยนฟิลด์คีย์เวิร์ดที่ซิงโครไนซ์แก้ไขบล็อกโค้ดและวิธีการ
ไม่สามารถปิดกั้นเธรดเพื่อรอในกรณีที่ระเหยได้สามารถบล็อกเธรดเพื่อรอในกรณีที่ซิงโครไนซ์
ปรับปรุงประสิทธิภาพของเธรดวิธีการซิงโครไนซ์จะลดประสิทธิภาพของเธรด
จะซิงโครไนซ์ค่าของตัวแปรทีละตัวระหว่างหน่วยความจำเธรดและหน่วยความจำหลักจะซิงโครไนซ์ค่าของตัวแปรทั้งหมดระหว่างหน่วยความจำเธรดและหน่วยความจำหลัก
ฟิลด์ที่ระเหยไม่ได้อยู่ภายใต้การปรับแต่งคอมไพลเลอร์การซิงโครไนซ์ขึ้นอยู่กับการปรับให้เหมาะสมของคอมไพเลอร์

ไปต่อกับบทความนี้เกี่ยวกับ Volatile Keyword ใน Java

ตัวอย่าง:

คลาสสาธารณะ VolatileTest {private static final Logger LOGGER = MyLoggerFactory.getSimplestLogger () private static volatile int MY_INT = 0 public static void main (String [] args) {new ChangeListener (). start () new ChangeMaker (). start ()} คลาสแบบคงที่ ChangeListener ขยายเธรด {@Override public void run () {int local_value = MY_INT ในขณะที่ (local_value<5){ if( local_value!= MY_INT){ LOGGER.log(Level.INFO,'Got Change for MY_INT : {0}', MY_INT) local_value= MY_INT } } } } static class ChangeMaker extends Thread{ @Override public void run() { int local_value = MY_INT while (MY_INT <5){ LOGGER.log(Level.INFO, 'Incrementing MY_INT to {0}', local_value+1) MY_INT = ++local_value try { Thread.sleep(500) } catch (InterruptedException e) { e.printStackTrace() } } } } } 

ภาพ - ระเหย -Edureka

ดังนั้นเราจึงมาถึงตอนท้ายของบทความนี้เกี่ยวกับ 'Volatile Keyword in Java' หากคุณต้องการเรียนรู้เพิ่มเติมโปรดดู Java Training โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ Edureka’s หลักสูตรนี้ออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบล็อกนี้และเราจะติดต่อกลับโดยเร็วที่สุด