Böyle bir şey bildirebilir miyim?Uçucu değişken, javada statik olarak tanımlanabilir mi?
static volatile boolean first=false;
Böyle bir şey bildirebilir miyim?Uçucu değişken, javada statik olarak tanımlanabilir mi?
static volatile boolean first=false;
Michael'ın yorumunu genişletmek için.
static
volatile
sadece değeri uyarı olmadan diğer iplikler ile değiştirilebilir olduğu anlamına gelir.
, bu sorunun cevabı evet. Örnek ilişkisi eşzamanlı modifikasyona ortogonaldir.
Şimdi bu mükemmel bir cevapları gibi .. meraktan –
http://stackoverflow.com/questions/2423622/volatile-vs-static-in-java –
, bir 'final' orada neyi tanıtmak olur? – Skynet
Elbette. İki modifiye edicinin etkileri tamamen ortogonaldir.
Evet, yapabilirsiniz.
Java bir static
değişken (nesnesi için, örneğin, statik olmayan değişken olarak bir kez olan) sınıfı bir kere saklanır. Bu, tüm nesnelerin (ve statik yöntemlerin) aynı değişkeni paylaştığı anlamına gelir.
Bir değişkeni volatile
olarak bildirmek (bu static
olsun veya olmasın) değişkenin çok sayıda iş parçacığı tarafından sık sık erişileceğini belirtir. Java'da bu, iş parçacığına, değişkenin değerini önleyemediklerini öğretmekle kalmaz, ancak diğer parçacıkların değişikliği görmesi için mutasyondan hemen sonra geriye yazmak zorunda kalır. (Java'daki iş parçacıkları, değişkenleri varsayılan olarak önbelleğe almakta serbesttir).
Başka ilginç bir soru şu olurdu: “Statik” ve “statik bir değişken” değişkeni arasında bir fark var mı? Bir keresinde statik değişkenlerin iş parçacıkları tarafından önbelleğe alınmadığını okudum, bu yüzden değişken bir statik değişken bildirmek gerçekten gerekli değil mi? Bu konuda yorumlarınız var mı? – basZero
Gerçekten bir fark var ve cevaptan çıkar: A 'statik 'değişkeni her sınıfta bir kez saklanır. Bir "statik volatile" değişkeni, her bir sınıf için bir kez saklanır. _and_, çok sayıda iş parçacığı tarafından sık sık erişilir, yani okumalar önbelleğe alınamaz. –
bunu denediniz mi? ne oldu? – Mat
Bu site Google’ın yerine geçmez ve dokümanları okuyamaz. Size "hazır" cevaplar getirmek için bir site değil. Normal aramayla kolayca cevap bulamadığınız programlama ile ilgili belirli sorular sormanız gerekiyor. İyi cevaplar istiyorsanız, en azından sorularınızı net (yazım, büyük harf kullanımı, kod formatlama sayısı) yapmaya çalışın. Bu sorunun cevabını, 30'lu googlingte bulabilirsiniz. – Mat
@Saurabh: Tam olarak bu nokta. Cevabı kendiniz bulabilirseniz soruyu soran nokta nedir? Bu site insanlara soru sorma amacı taşımamaktadır, çünkü böyle hissettiriyorlar, sorun yaşadıkları kişilere yardımcı olmak, tercihen sadece kendileriyle uğraştıktan sonra. 30'lu yaşlarda kendinize bir cevap bulmak yerine, kendinize cevap verebilmeniz için bir kaç dakika * başka * insanın zamanını harcadığınızı söylüyorsunuz. – Mac