Neden Runnable
arabirimini kullanarak iş parçacığı oluştururken runnable örneğini geçirmemiz gerekiyor?Konuları başlatmak için neden bir Runnable'a ihtiyacımız var?
cevap
Çalıştırılabilir nesneyi iş parçacığının yapıcısına iletmemiz gerekçesinin, iş parçacığının yürütmesini istediğimiz run()
yöntemine ulaşması için bir yolu olması gerektiğidir.
Thread sınıfının run()
yöntemi geçersiz kılmasını artık olduğundan bir örneğin
public class CustomApplet extends Applet {
public void init() {
Runnable ot = new OurClass();
Thread th = new Thread(ot);
th.start();
}
}
al, Konu sınıfının varsayılan run()
yöntem akdedilmiş olup; Bu
public void run() {
if (ot!= null) {
ot.run();
}
}
Dolayısıyla, ot
biz parçacığının kurucusuna aktarılan çalıştırılabilir nesnedir gibi bu varsayılan run()
yöntem görünüyor. Böylece iş parçacığı, runnable nesnesinin hemen run()
yöntemini çağıran Thread sınıfının run()
yöntemiyle yürütülmeye başlar.
Yeni iş parçacığının ne yapmasını istiyorsunuz? Muhtemelen bazı kodları yürütmek istersiniz. Ama hangi kod çalıştırmalı? Kodu bir konuya koyamazsınız. Ve Java fonksiyon işaretçilerine sahip değil. Bu sorunu çözmek için küçük bir hile, bir işlevi uygulayan bir nesneyi kullanmaktır. Bu işlev run
. Yani, nesnenin bir run
yöntemine sahip olması gerekir. Runnable arayüzünün yaptığı budur, bir çalışma yöntemi olduğundan emin olun. Böylece, bir Runnable nesnesi verirsek, iş parçacığı ne yapacağını bilir!
+1 ...................... :) –
- 1. Neden önbelleğe ihtiyacımız var?
- 2. Neden force.on'a ihtiyacımız var d3
- 3. PHP: Neden string karşılaştırma fonksiyonuna ihtiyacımız var?
- 4. Neden stelaz.stream iteratee üzerinde ihtiyacımız var?
- 5. İstemci oturumlarımız olduğunda neden JWT'ye ihtiyacımız var?
- 6. Neden ClassMethods ve InstanceMethods'a ihtiyacımız var?
- 7. Neden TensorFlow tf.Graph'a ihtiyacımız var? amacını nedir
- 8. Havuz modeli - Neden tam olarak Arayüzlere ihtiyacımız var?
- 9. Neden AGGREGATE FONKSİYONLARI ile GROUP BY'ye ihtiyacımız var?
- 10. Bazı 512 elemanlar için CSS sorgusuna ihtiyacımız var
- 11. Kancalar: izinleri geri almak için neden VirtualProtect() 'a tekrar ihtiyacımız var?
- 12. Kısayol bir etkinlik başlatmak için
- 13. Çekirdek bağlantılı listedeki düğümleri silmek için neden list_for_each_safe() dosyasına ihtiyacımız var?
- 14. Python'da, dosya tanıtıcısı üzerinde yineleme yapabileceğimiz için neden readlines() 'a ihtiyacımız var?
- 15. Neden FUSE tüm konuları kilitliyor gibi görünüyor?
- 16. Builder Kalıbında bir .build() yöntemine mi ihtiyacımız var?
- 17. Yerel konuları Ruby içinde 1.9.1, benim için ne var?
- 18. CPU Affinity Maskeler ben 4 konuları var
- 19. başlatmak için nasıl üye
- 20. Işleyicilere işlenen konuları bağlama
- 21. WSD'den bir Explorer penceresi başlatmak için WSL
- 22. Uygulamamdan bir uygulamayı başlatmak için özel API
- 23. Neden uyku Ben postgres sunucusunu başlatmak için Kumaş kullanıyorum yeniden
- 24. Konuları Anlar + Eşzamansız
- 25. Neden attr_accessor içeride başlatmak kullanabilir ki?
- 26. Bir Hizmeti başlatmak ve durdurmak için PendingIntent
- 27. nasıl sayfasından maded tüm ajax istekleri yakalamak için yola ihtiyacımız var bir web sayfasında
- 28. ExecutorService'deki konuları nasıl sınırlarsınız?
- 29. Konuları konsola yazdırmak için iş parçacığı kullandığımda, neden tek bir sonuç üretiyor?
- 30. Neden bir NSInteger var?
İş parçacığı sınıfı çalıştırılabilir arabirimi otomatik olarak uygular mı? –
Evet. o .. –