Rumah  >  Soal Jawab  >  teks badan

java - getValue 和 increment 方法是互斥的?

public class CheesyCounter {
    // Employs the cheap read-write lock trick
    // All mutative operations MUST be done with the 'this' lock held
    @GuardedBy("this") private volatile int value;

    public int getValue() { return value; }

    public synchronized int increment() {
        return value++;
    }
}

假如一个线程在写,另一个线程在读,不会出现读线程读到的值是写线程还没更新之前的值嘛?也就是读写线程不同步的情况

黄舟黄舟2743 hari yang lalu426

membalas semua(2)saya akan balas

  • 怪我咯

    怪我咯2017-04-18 10:53:06

    Kata kunci

    volatile digunakan untuk memastikan keterlihatan memori.

    balas
    0
  • 巴扎黑

    巴扎黑2017-04-18 10:53:06

    Apabila nilai yang diubah suai oleh volatile dibaca menggunakan getValue(), nilai terkini akan sentiasa diperolehi, yang memenuhi keterlihatan
    Volatile boleh menjamin keterlihatan satu baca dan tulis, tetapi operasi kompaun (seperti nilai++. ) tidak dapat menjaminnya dan perlu ditambah Kunci atau langkah penyegerakan lain

    balas
    0
  • Batalbalas