Tek bir Karşılaştırıcı örneği oluşturursam, bu örnek koleksiyonları Koleksiyonlar.sort() kullanarak sıralamak için birden fazla iş parçacığı üzerinde kullanılabilir mi? Ya da, iş parçacığı güvenliğini sağlamak için Collections.sort() öğesine yapılan her çağrı için Karşılaştırıcı'nın yeni bir örneğini oluşturmam gerekir mi?Java'da, Collections.sort() thread safe'de kullanılan bir Karşılaştırıcı mı?
cevap
Bu, tamamen Comparator
'u nasıl uyguladığınıza bağlıdır. Örneğin, karşılaştırma sırasında içeriğe yazılan veya içeriği örtük olarak değiştirilmiş örnek değişkenleri varsa, bunlar threadafe olmaz.
Çoğu Comparator
uygulaması böyle bir şey yapmaz, ancak makul bir şekilde gerçekleşebilecek bir senaryo, tarihleri temsil eden Dizeleri karşılaştırmak için SimpleDateFormat
kullanıyordur. Ne yazık ki, SimpleDateFormat
'un kendisi iş parçacığı güvenli değildir.
Karşılaştırıcı bir arabirimdir, iç tutarlı bir eşzamanlılık özelliklerine sahip değildir. Uygulamanız threadafe veya değilse, yazdığınıza bağlıdır. Yaptığı her şey, karşılaştırma yönteminin (Örnek veya Sınıf düzeyi durumu) kapsamı ile sınırlandırılmışsa ve kullandığı tüm kaynaklar threadafe ise, o zaman kendini threadafe olacaktır.
Genellikle (her zaman?) Reentrant olduğundan, iş parçacığı olmayan bir Güvenli Karşılaştırıcı bulursam çok şaşırdım.
Sıralı koleksiyon, sıralanan sırada değiştirilmekte olan koleksiyon değiştirilirse olurdu.
- 1. Java's Collections.sort (liste, karşılaştırıcı) sıralama düzeni nedir? küçükten büyüğe ya da büyükten küçüğe mi?
- 2. Collections.sort() öğesini kullanırken,
- 3. Karşılaştırıcı karşılaştırmasıInt
- 4. NotifyDataSetChanged() thread thread
- 5. Karşılaştırıcı ihlali genel sözleşmesi
- 6. Collections.sort hiçbir şeyi sıralamakta değil
- 7. Haskell'de threadID'i forkIO kullanarak thread thread kullanarak sorgulamanın bir yolu var mı?
- 8. Java Karşılaştırıcı sınıf diziler
- 9. Bir karşılaştırıcı akışı nasıl oluşturulur ve uygulanır?
- 10. Yazıcı ile javada dizileri kullanma
- 11. Özel bir karşılaştırıcı nasıl "sort" için geçirilir?
- 12. Std :: thread nasıl bir standarttır?
- 13. eclipse karşılaştırıcı, farklılıkları göstermeyi durdurdu
- 14. İfadede kullanılan [] ifadede kullanılan
- 15. java.lang.NoSuchMethodError: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator() Ljava/util/Karşılaştırıcı; "}}
- 16. Özel bir karşılaştırıcı kullanarak bir dizi init nasıl sıralanır?
- 17. IQueryable'in yaygın olarak kullanılan uygulamaları var mı?
- 18. HTML5 Canvas'da kullanılan dörtlü örnek var mı?
- 19. Karşılaştırma ve Karşılaştırma Arabirimi'nin bilinen yöntemleri ile Collections.sort yöntemi arasındaki bağlantı nedir?
- 20. "RuntimeError: thread .__ init __()" alt sınıflama iş parçacığı olarak adlandırılırken .Thread
- 21. Java'da yaygın olarak kullanılan bir rasyonel sayılar kütüphanesi var mı?
- 22. Pencereler için tutulmayı kullanarak javada akış
- 23. Uçucu değişken, javada statik olarak tanımlanabilir mi?
- 24. Koyu renklerin parlak hale getirilmesi javada parlak
- 25. Salatalık javada senaryo adı nasıl alınır?
- 26. Özel bir karşılaştırıcı kullanarak genel bir listeyi nasıl sıralarım?
- 27. Std :: thread :: id varsayılan yapıcısı değil "NULL" kimliği oluşturmalı mı?
- 28. Adları alfabetik olarak sıralamak mı istiyorsunuz?
- 29. Seans ve thread
- 30. Sayıları içerebilen dizeleri "doğal olarak" sıralamak için bir Karşılaştırıcı var mı, guava?
İş parçacığı güvenli olmayan karşılaştırma yönteminin içinde bir miktar kaynak kullanıyor olabilir. Eşlenmemiş bir koleksiyon, takvim vb. Düzenleme: Ne Michael B dedi^ – Affe
Haklısın, bu davaları düşünmemiştim. – Artefacto