kazanır. Bu, implements Runnable
is preferred over extends Thread
'un Java iş parçacığında olduğunu bildiğinden, eğer gerekliyse başka bir sınıfı genişletmemize izin veriyor. Fakat bu durumda, extends Thread
'un implements Runnable
'a göre kendi avantajları vardır ve eğer öyleyse, bu avantajlar nelerdir?Niçin 'Thread'leri genişletiyor', 'Runnable uygulandığında', tüm durumlarda
cevap
Bazen (neredeyse hiçbir zaman değil, bazen) Thread
'un temel davranışını değiştirmek isteyebilirsiniz.
Uzatmanız gereken zaman.
Thread
sınıfından bir yöntemi geçersiz kılarak değiştirebilirsiniz, bunu Runnable
'dan birini uygulayarak gerçekleştiremezsiniz.
Örnek [burada] geçersiz kılarsınız (http://stackoverflow.com/questions/34905333/in-run-method-how-to-find-from-where-start- denir/34905821 # 34905821) - asker bu parçacığı hangi parçacığı oluşturduğunu/başlattığını bilmek istedi. Kurucuyu geçersiz kılar ve bunu yapmaya başlar. – OldCurmudgeon
Java 1.0 sürümünden bu yana en son 20 yılı aşkın süredir, iyi bir tasarım deseni olarak kabul edilen şey değişti. Ancak, Java, geriye dönük uyumluluğa kendini adamış, bu da zayıf tasarım desenlerini kullanabilecek eski kodun hala işe yarayacağı anlamına geliyor.
Evcil hayvan nefretlerimden biri StringBuffer
'dur; bunun için yöntem eşzamanlı hale getirilmesinin iyi bir fikir olmadığını, onlarca yıldan daha uzun bir süre önce değiştirildiğini, ancak ne yazık ki geliştiricilerin bugün kullanılmasını engellemediğini ve hatta yeni geliştiricilerin bile bunu kullanmamasını, Java kullanmaya başlamadan çok önce kullanımdan kaldırılmış olsa bile.
, runable'lar ve thread'lar arasındaki seçimin "tasarım desenleri" ile hiçbir ilgisi yoktur, bu hiçbir anlam ifade etmez. Bunlar, iki farklı kullanım senaryoları olan – specializt
'dur. Tasarım kalıpları, mirasa göre bileşimdir. Aklında olan iki farklı kullanım durumu nedir? Alt-classing 'Thread' * çok nadiren * bir şeyi geçersiz kılma hakkında * ama 'runnable' bir 'Thread' ile ilgili 'runnable' olduğunu düşünürseniz 'run()' –
. Peki öyle değil. Hiç de. Yürütülebilirler engellenir, yürütülebilir algoritmalar ve iş parçacıkları, çağrılan iş parçacığı sona erdikten sonra hala çalışabilen, eşzamansız, bağımsız olanlardır. Lütfen size yabancı olan konular hakkında cevap yazmayın, çok teşekkür ederim. Bu soru, "Ne daha iyi: GM bitkileri ya da son kötü kırma mevsimi" ne göre yeniden düzenlenebilir. – specializt
- 1. Null dizisi niçin niçin niçin?
- 2. Shopware Modellerini Genişletiyor
- 3. RadioGroup RelativeLayout'u genişletiyor mu?
- 4. Cloneable uygulandığında bile CloneNotSupportedException
- 5. Uygulandığında çöktü Araç Çubuğu
- 6. Tüm durumlarda, shared_ptr yapımı için ham işaretçiye neden izin verilir?
- 7. Groovy - listeyi kapanış argümanlarına genişletiyor
- 8. JavaFX runnable jar image loading
- 9. Bir runnable pakete nasıl yerleştirilir?
- 10. Neden Thread yerine Runnable kullanmalıyım?
- 11. Niçin endekslenebiliyor?
- 12. Android'deki İşleyici'deki removeCallbacks (Runnable r) ne demektir
- 13. deleteRecord, Model filtre uygulandığında ArrayController güncelleştirmiyor
- 14. Nasıl Çalışır android için Mono Runnable kullanın
- 15. RSS formatını daha fazla alanla genişletiyor musunuz?
- 16. Symfony 2 istek servisini genişletiyor musunuz?
- 17. Neden AES 128 şifrelemesi verileri genişletiyor?
- 18. Python'da listelerin bir listesini genişletiyor musunuz?
- 19. UISearchBar, düzenlemeye başladığı zaman metni genişletiyor
- 20. wkhtmltopdf resim oluşturma bazı durumlarda yavaştır
- 21. Özellik kümesi, bir UITypeEditor uygulandığında tetiklenmiyor
- 22. CSS3 ölçeği uygulandığında sortable yanlış davranıyor
- 23. Runnable içindeki bir değişkeni nasıl güncellerim?
- 24. Yürütülebilir değişkene bir Runnable sınıfı içinden erişme
- 25. Niçin çerezim silinmiyor/silinmiyor?
- 26. Niçin Java ile
- 27. Niçin Siparişi [Int]
- 28. Niçin Değişken harita kıvılcım
- 29. Niçin Android emülatörleri 5554
- 30. Karşılaştırma pandas.N eşitlendiğinde niçin?
@proudandhonour: Evet, bu sorunun cevabını okudum, ancak tüm cevaplar 'uygulanabilir olanları nasıl uygulayacağını' açıklıyor. Ve aslında bu cevaplar aklımda bu soruyu yarattı. – rahul
@proudandhonour Bu soruyu cevaplayan cevaba bağlanır mısınız? İlk birkaçda görünmüyor. – djechlin
senaryosu, iş parçacığı başladığında, söz konusu iş parçacığının ayrıntılarını DB'ye eklemek istediğinizi düşünün. Bu, run() yönteminde sahip olduğunuz iş mantığından farklıdır, dolayısıyla onu ayrı tutmak istersiniz. Böylece, start() ve run() yöntemini –