numaralı telefonu tamamlamasını beklemiyorum. Bir iş parçacığının statik aramadan çıkmasını ve iş parçacığının bitmesini beklemek için bir yol bulmam gerekiyor. Temel olarak, bir "ateş ve unut" yaklaşımı. Birisi bana bunun nasıl başarılabileceğine dair basit bir örnek verebilir mi?Java, Bir iş parçacığının
cevap
Thread t = new Thread(new YourClassThatImplementsRunnable());
t.start();
// JDK 8
new Thread(() -> methodYouWantToRun()).start();
public static void foo() {
new Thread() {
public void run() {
//do something here....
}
}.start();
}
Ancak, görev göreceli olarak basitse, iş parçacığı için İşlenebilir yapıcıyı kullanın (yani, yeni iş parçacığı (yeni Runnable() {public void run() {...}}), Karmaşık sınıf, ancak bayt kodunda daha basit olması gereken bir arabirimin uygulanması ve Thread'deki yöntemlerle herhangi bir ad çakışması olmayacak. – Gracenotes
temelde açtığınızda, gerekli katılmak gerçekleştirmek yok. Böylece iş parçacığının bitmesini beklemeyeceksiniz. o kısa ömürlü ise
new Thread(new yourLongRunningProcessThatImplementsRunnable()).start();
: uygulamanızda kendisine benzer bir yaşam döngüsü vardır, uzun ömürlü dişli, ve diğer iş parçacığı üzerinde bekleyen onun çok fazla zaman harcama olacak ise
CPU bağlı görev:
ExecutorService es = Executors.newFixedThreadPool(Runtime.availableProcessors());
es.submit(new yourTaskThatImplementsRunnable());
rağmen, böyle çoğu durumda, bu aynı ExecutorService
için bir dizi görevi göndererek edilecektir.
Bkz:
senin görevin niteliğine bağlı olarak, farklı yolları approrpiate çekebilir:
(1) birçok söylediğim gibi arada bir görev için ortak bir şekilde) ( bir dişliyi ve başlangıç çağrı basitçe etmektir yöntem.
(2) Arka plan diziniz durmazsa, varsayılan olarak diğer iş parçacıkları bittiğinde programınızın kapanmasını engelleyeceğini unutmayın. Bu nedenle , bu davranışa sahip olmamak için iş parçacığındaki setDaemon (true) öğesini çağırmak isteyebilirsiniz. (Kapatılmakta bir temiz yolu GUI tabanlı uygulamalarda, diğer taraftan, genellikle zaten) kadar sadece System.exit (çağırarak sona ve ideal size uzun süren bir görev haline buile ederim.)
(3) sık sık "yangın ve unut" için kısa ömürlü görevler varsa, daha sonra Java 5'ten itibaren kullanılabilir olan Executors framework kullanmayı düşünün.
Bu harika, teşekkürler. – eric2323223
- 1. Bir iş parçacığının içinde bir iş parçacığının durdurulması
- 2. Java iş parçacığının yürütülmesini izleme araçları
- 3. Bir iş parçacığının geçme süresini
- 4. Bir iş parçacığının ne kadar bellek alması java
- 5. Python3'te iş parçacığının bırakılması
- 6. Bir iş parçacığının durumu nasıl alınır?
- 7. Bir iş parçacığının işlenmemiş istisnasını yakalama
- 8. Engelleme kuyruğunda bekleyen bir iş parçacığının zarif bir şekilde sonlandırılması
- 9. Kompresör performansında hiper iş parçacığının etkisi?
- 10. Çoklu iş parçacığının en iyi yolu?
- 11. iPhone: İş parçacığının ana iş parçacığı nasıl belirlenir?
- 12. Belirli bir süre sonra bir iş parçacığının durdurulması
- 13. Quartz iş parçacığının her saniye çalışmasını programlamak mümkün mü?
- 14. Java XPathFactory iş güvenliği
- 15. Bir iş parçacığının ileti sırasının boyutunu izleyebilir miyim?
- 16. Thread.yield() öğesinden sonraki bir iş parçacığının Thread.State nedir?
- 17. Belirli bir iş parçacığının çekirdek yığını işlevini nasıl görebilirim?
- 18. Birden çok iş parçacığının eşzamansız olarak bir dosyaya yazmak C#
- 19. Bir iş parçacığının zamanını C# cinsinden nasıl ölçebilirim?
- 20. GMail API - Bir iş parçacığının son iletisini al
- 21. Bir UI iş parçacığının tanımı nedir? Bir .NET uygulamasında yalnızca bir UI iş parçacığı var mı?
- 22. @Async, bir iş parçacığının diğer iş parçacığı bitinceye kadar devam etmesini önler
- 23. ZeroMQ: C-benzeri çoklu iş parçacığının nasıl elde edileceği
- 24. Geçerli iş parçacığının maksimum yığın boyutu .net içinde nasıl bulunur?
- 25. Geçerli iş parçacığının apart durumu nasıl kontrol edilir?
- 26. Perl'de, iş parçacığının paralel olarak bitmesini nasıl bekleyebilirim?
- 27. Gerçek asenkronize bir java iş parçacığı nasıl gerçekleştirilir
- 28. Geçerli iş parçacığının ana iş parçacığı olup olmadığını kontrol edin, Python
- 29. Perl iş parçacığının çalışması bittiğinde bir şey yapmanın bir yolu var mı?
- 30. Neden bir ThreadPool iş parçacığının apartman durumunu değiştiremiyoruz ve ShowDialog kullanıldığında neden bir mesaj almak istemiyoruz?
Temel olarak bir iş parçacığının varsayılan davranışı - bu iş parçacığı bir iş parçacığı iletmek veya paylaşılan bir değişkenin durumunu değiştirmek için gerekecek mi? Daha fazla detay güzel olurdu. – Gandalf