คำถามติดแท็ก synchronize

8
เหตุใดจึงต้องใช้ ReentrantLock ถ้าใครสามารถใช้ข้อมูลให้ตรงกัน (นี่)
synchronized (this)ฉันพยายามที่จะเข้าใจสิ่งที่ทำให้ล็อคในการทำงานพร้อมกันที่สำคัญดังนั้นหากสามารถใช้ ในรหัสจำลองด้านล่างฉันสามารถทำอย่างใดอย่างหนึ่ง: ทำข้อมูลให้ตรงกันทั้งวิธีหรือประสานพื้นที่เสี่ยง ( synchronized(this){...}) หรือล็อคพื้นที่โค้ดที่มีช่องโหว่ด้วย ReentrantLock รหัส: private final ReentrantLock lock = new ReentrantLock(); private static List<Integer> ints; public Integer getResult(String name) { . . . lock.lock(); try { if (ints.size()==3) { ints=null; return -9; } for (int x=0; x<ints.size(); x++) { System.out.println("["+name+"] "+x+"/"+ints.size()+". values >>>>"+ints.get(x)); } } …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.