SORU
7 AĞUSTOS 2011, Pazar


VM ve Java Dalvik Bellek Modeli (Android Eşzamanlı programlama)

Eşzamanlı programlama sürü içeren ve disiplinler arası konuları bazı özel iletişim ve diğer şeylerden biri . uygulamak için gidiyorum Android projeleri üzerinde çalışıyorum ^strong>java.açıklama.concurentiyi amaçlarım için uygun değil.

Eşzamanlı programlama genel olarak kolay değil ama Dalvik ile bile zor görünüyor. Doğru kodu almak için bazı özel şeyler ve sorun Dalvik ile ortaya nerede olduğunu bilmelisin. Sadece Dalvik VM hakkında ayrıntılı bir belge bulamadım. Çoğu Android kaynakları (biledeveloper.android.complatform üzerinde duruldu API ve önemsiz olmayan (düşük seviye) şeyler hakkında derin bir bilgi sağlamaz.

Örneğin, hangi sürüm içinJava Dil ŞartnamesiDalvik VM uygun mu ? volatile değişkenlerin tedaviye yanıt bağlı olarak farklı ve volatile değişkenleri kullanan herhangi bir eşzamanlı kodu etkiler.

Zaten bazı sorular vardır:

ve bazı cevaplarfaddençok kullanışlıdır ama yine de daha ayrıntılı ve söz konusu maddenin tam bilgi istiyorum.

Ham soruları (önceki sorulara cevaplar gelecek listesinde gerekirse güncellenir) ilginç duyuyorum:

  1. Nerede soruların cevapları aşağıda sağlayabilir Dalvik VM ile ilgili ayrıntıları bulmak için ?
  2. Hangi sürüm içinJava Dil ŞartnamesiDalvik VM için uygun mu ?
  3. Eğer cevap (2) "Dalviks destek oluyor." üçüncüsü ise ^em>Java Bellek Modelibu şartname meydan okudu ? Ve özellikle de nasıl tam volatile değişkenler semantik desteği ?
  4. Double checked locking in Androidfaddensağlamak için şu yorumu:

    Evet. "Anahtar kelime, bu tek işlemcili (Android tüm sürümleri) çalışma ve ("Petek "ve üstü) . 3.0 SMU" uçucu birlikte

    Anlamına mı geliyorSamsung Galaxy SİIçift çekirdekli işlemciye sahip olan ama sadece Android 2.3 eşzamanlı kod yürütmesine hatalı ? ders Galaxy yalnızca bir örnektir (soruyu önceden Android 3.0 platformu) ile her çok çekirdekli cihaz hakkında

  5. Is Dalvik's memory model the same as Java's?faddenşu cümle ile cevap verin

    Dalvik şu anda nakliye sürüm yok genel amaçlı-133 açısından tamamen doğrudur

    Varolan doğru eşzamanlı Java kod hatalı herhangi bir Android sürümü bu yorum gönderme güncel serbest çalışabilir anlamına mı geliyor ?

Güncelleme#1: @Cevap sivrisineklerin yorum () yorum için çok çok uzun

@sivrisinek yorum yazmak:

@Alexey Dalvik Dalvik uygunluk için bir seçenek değil geçen JCK gerektirdiğinden herhangi bir İDEA edition için uygun değildir.Hatta standart belirtimi için uygun çünkü standart Java derleyici için başvuru yapamaz anlamına mı geliyor ?bunun bir önemi var mı? evet ise, nasıl?

Neyse, benim sorum bir şekilde koruyordu. Ben aslında ne demek olduğunuİDEAJava derleyici uygulamaları aynı zamanda bir kurallar değil sadeceörtülüherhangi bir yönergeleriJVMuygulamaları. NitekimİDEAörneğin, bazı türleri okuma ve yazma belirtiratomişlemleri. Okuma/tercüme sadece bir tek işlem kodları yazmak, çünkü derleyici yazar için çok ilginç değil. Ama temel içinJVMhangi uygulamagerekirbu işlem kodları doğru şekilde uygulamak. Şimdi neden söz ettiğimi göreceksiniz. Dalvik ve programlar standart Java derleyici ile derlenmiş kabul yürütme sırasında vardırhiçbir garanti yokbunlar yürütülürdoğrubeklediğiniz gibi) çünkü hiç kimse (belki Dalvik geliştiricileri hariç) her şeyi bilir İDEA özellikleri programda kullanılan Dalvik. tarafından desteklenmektedir.

AçıktırJCKDalvik için bir seçenek değildir ve Tamam, ama programcılar gerçekten hangi bilmeliözellikleriİDEADalvik kendi kod yürütmek güveniyor olabilir. Ama belgelerinde bu konuda herhangi bir kelime yoktur. Beklediğiniz süre basit operatörleri =, , -, *, vb gibi. non-önemsiz ne beklediğiniz gibi çalışırözelliklerivolatile değişkenler semantik gibi 2. ve 3. sürümleri . farklı olan ^em>İDEA)? Ve ikincisi; önemsiz olmayan birçok şey değildirİDEAve özellikleJava Bellek Modeli.

CEVAP
3 AĞUSTOS 2012, Cuma


Tamamen sorunuzu okudum,görmedim ama öncelikle kodlayıcıları farklı uı oluşturucu vs konuları için kullanmayın bile opengles uçucu kullanmayın.

Geçici bir iş parçacığı yazar varsa ve kullanmak (bazı sınıf " statik özellik) okur ve diğer, daha sonra bazı iyi sayabilir işlemek için, bu senkronize okumalısın

How to synchronize a static variable among threads running different instances of a class in java?

  1. her zaman senkronize kullanın
  2. eşzamanlı programlama gibi zor konular için büyük projelerde atlamayın
  3. runnables kavramını ele,sahip oldukları oyun android örnekler üzerinden gitmek işleyicileri, ve iletileri değiştirme b/konuları (UI iş PARÇACIĞI VE OLUŞTURUCU THREAD) w.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • macpulenta

    macpulenta

    9 EYLÜL 2006
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006