İçeriğe geç

Thread Güvenli Olmayan Paylaşılan Durum (ARCH4038)

Anahtar java.async.non-volatile-shared-field · Önem warning · Kategori async

volatile veya atomik olmayan, senkronize bir blok dışında okunan/yazılan değiştirilebilir paylaşılan alanlar, eşzamanlı erişimde görünürlük ve yarış koşulu sorunlarına yol açar.

class Counter {
private boolean running; // paylaşılan, korumasız
void start() { running = true; }
void stop() { running = false; } // başka thread'den
}
class Counter {
private volatile boolean running; // görünürlük garantili
void start() { running = true; }
void stop() { running = false; }
}

Paylaşılan alanı volatile yapın, AtomicX kullanın veya tüm erişimleri synchronized/lock ile koruyun.