Benim main(String[] args)
yöntemimde, Saldırı iş parçacığı üzerinde main1
yöntemini çalıştırmak için SwingUtilities.invokeAndWait
numaralı çağrıya çağrı yaptım. İplik güvenliği için her zaman buna ihtiyacım olduğunu varsaydım. GUI iş parçacığı için herhangi bir GUI kodu yapmak için ilk iş parçacığının olur çünkü bunun gerekli olmadığını söylendi. Veya başka bir şekilde söylemek gerekirse, Swing'i sadece bir iş parçacığından kullanabilirsiniz, ancak hangisi önemli değil. Ama bunun için bir kaynak bulamıyorum ve emin olmak isterim.Bir uygulamanın ana yönteminden Swing iş parçacığına geçmek gerekli mi?
5
A
cevap
7
Size anlatılanlar yanlıştır. main
yöntemi başlangıçta ana iş parçacığı tarafından çağrılır. Tüm GUI ile ilgili faaliyetler Olay Sevk Konu olarak adlandırılan tamamen ayrı bir iş parçacığı üzerinde gerçekleştirilmelidir. Ana iş parçacığı , EDT değil.
public class ThreadTest {
public static void main(String[] args) {
final Thread main = Thread.currentThread();
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
Thread edt = Thread.currentThread();
System.out.println(main);
System.out.println(edt);
System.out.println(main.equals(edt));
}
});
}
}
İlgili konular
- 1. Her iş parçacığına bir SQLiteConnection?
- 2. Başka bir iş parçacığına bir istisna atın
- 3. Neden muteks iş parçacığına geçirilemiyor?
- 4. Çok işlemciden iş parçacığına geçiş
- 5. Arabirim işaretçisini bir iş parçacığına nasıl geçiririm?
- 6. Bir iş parçacığına iletilen bir değişkeni nasıl güncellerim?
- 7. DocsList'ten DriveApp'a geçmek için mi?
- 8. Bir iş parçacığına kıyasla bir görev hafifliği var mı?
- 9. OnStop() ana iş parçacığında çağrılıyor
- 10. Başladıktan sonra bir iş parçacığına bir referans mı tutmalıyım?
- 11. Bir Vektör'den (veya ArrayList'e) iki iş parçacığına Okuma/Okuma
- 12. Çocuk iş parçacığına izin kopyaları/kimlik doğrulaması ...?
- 13. Bildirim() çağrılmıyorsa bekleyen iş parçacığına ne olur?
- 14. Delphi'deki ana iş parçacığından bir TThread'e nasıl mesaj gönderilir?
- 15. Yönetici hizmeti kullanılarak başlatılan iş parçacığına nasıl katılırım?
- 16. Swing
- 17. Task.Factory.StartNew bir arka plan iş parçacığına nasıl zorlanır?
- 18. Flask-SocketIO eventlet farklı bir iş parçacığına geçemiyor
- 19. UI iş parçacığına erişmeden bir BackgroundWorker'da "UnauthorizedAccessException" alma
- 20. WinRT/Metro'da UI iş parçacığına göndermem gerekip gerekmediğini nasıl belirlerim?
- 21. Aşağıdaki kod parçasında yineleme gerekli mi?
- 22. KillTimer gerçekten gerekli mi?
- 23. CDATA gerçekten gerekli mi?
- 24. Heroku'da ALLOWED_HOSTS gerekli mi?
- 25. "Kendi" gerekli mi?
- 26. Kuvartz birden fazla kuvars dişi olduğunda sadece bir iş parçacığına sahip bir iş yürütme
- 27. AudioServicesPlaySystemSound ve ana iş parçacığı
- 28. HttpOnly gerekli mi?
- 29. Çift yıkama gerekli mi?
- 30. Ana iş parçacığı
bakınız:
güzel bir örnek ben neden bahsettiğimi görmek için [Swing eşzamanlılık: İlk konu] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/ initial.html). –
Swing belgeleri, bunun yapılması gerektiğini belirtir. Buna inanmaya eğilimliydim, çünkü tavsiyeyi görmezden gelmek zamanın% 99.9'unu işe yarayabilse de, bir süre için başarısız olma şansına sahip olur ve evrenin yasalarına göre, bu başarısızlık sadece programınızı gösterdiğinizde ortaya çıkar. en büyük müşterinize veya patronunuza. –
Pedantry noktası: Bu bir AWT iş parçacığı. –