Soru Senkronize yöntem neden arayüzde yer almıyor?


Kullandigimda synchronized Bir arabirimde bir yöntemde, derleyici bir hata yayar. Bunun neden olduğunu söyleyebilir misin?

Nedeni nedir (mantıklı) synchronized bir yönteme uygulanamaz interface?

Threadpool üzerinden bir arayüz yapmaya çalıştım bu linkte. Yukarıdaki kodumda Arayüz oluşturmama yardım et.


36
2018-01-25 11:24


Menşei




Cevaplar:


Çünkü synchronized bir uygulama detayıdır. Yöntemin bir uygulaması yöntemin senkronize edilmesine ihtiyaç duyabilirken, diğerinin buna ihtiyacı olmayabilir. Arayan, yöntemin senkronize olup olmadığını umursamıyor. Anlaşmanın bir parçası değil, ne yöntem yapar. Varsa, hangi senkronizasyon tekniğinin kullanıldığının sözleşmeyle alakası yoktur.


68
2018-01-25 11:27



Cevabınızdan çok etkilendim. Cevabınızın ikinci satırını detaylandırabilir misiniz? Sorduğum soruda sorduğum threadpool üzerinden bağlantı kurabilir miyim (bağlantıya bakın). - devsda
Neyi başarmak istediğinizi anlamıyorum ve diğer sorunuzda, bunu unutmak ve standart iplik havuzlarını kullanmak için birkaç afiş tarafından anlatıldınız. Her neyse, oluşturmak istediğiniz herhangi bir arayüz, senkronize edilen herhangi bir yöntemi açıklamayın. Arayüze ait değil, arayüzün somut uygulamasına ait. - JB Nizet
Aslında Inbuild Sınıfını kullanan bir kod yaptım. Fakat öğretmenim bunu daha iyi anlaşılması için basit veri yapılarıyla yapmamı istedi. bu yüzden dahili sınıfları kullanmadan kod oluşturmaya çalıştım. Eğer kaldırırsam sychronized anahtar kelime sonra kod, eşzamanlı olarak listeden görevleri kaldırma, istemediğim gibi bazı sorunlar oluşturur. Öyleyse, bu senaryolar için takip etmem gereken herhangi bir riskli yol söyle. - devsda
Senkronize edilmiş kullanmanız gerekiyorsa, o zaman yapın. Derleme yapamayacağından, onu arayüzlerdeki yöntemlere eklemeyin. - JB Nizet


senkronize bir uygulama detayıdır ve bir arayüze ait değildir.

Senkronize edilen anahtar kelimenin kullanımını içermeyen threadafe olabilecek her türlü uygulamaya sahip olabilirsiniz.

Uygulamaların iş parçacığı için güvenli olması gerektiğini belirtmek için bazı ek açıklamaları kullanmayı düşünebilirsiniz. Örneğin http://jetbrains.dzone.com/tips/concurrency-hot-try-jcip JCIP eşzamanlılık ek açıklamalarını nasıl kullanacağınızı açıklar.

BTW. Senkronize kullanımı yerine, java eşzamanlı çerçeveyle rahatlamak isteyebilirsiniz. Doğrudan senkronize gibi düşük seviyeli yapıların kullanılması, bu günlerde bir anti-desen olarak değerlendirilmektedir.


11
2018-01-25 11:38





Basit cevap senkronize edilmiş, yöntem uygulaması hakkında konuşuyor, ancak arayüzde, tüm yöntemler soyut değildir, bu da hiçbir uygulama anlamına gelmez.


5
2018-05-25 17:54