我正在寫簡單的java Tcp客戶端應用程序。連接在另一個線程中處理,我感到困惑,我如何處理主線程類中的一些函數?我應該使用特殊的靜態類嗎?或者是否有任何「調度程序」,它將處理線程之間的一些操作?Java。簡單的線程操作交換
回答
/* in main object or thread */
synchronized (someObject) {
someObject.wait();
}
/* in tcp connection thread/object */
synchronized (someObject) {
someObject.notify();
}
這將導致主線程阻塞,直到連接線程調用notify()。如果主線程是一個UI線程,這會導致非常差的用戶體驗。 – 2014-09-10 20:17:50
嗯,他說他的主要課程,我沒有把它當成他的用戶名,如果有的話。如果是這樣,他應該將他的TCP連接線程創建類分成第三個線程。然後,他的UI線程將不會被阻止。 – Motes 2014-09-10 21:22:18
通常,爲TCP連接使用單獨線程的全部原因是不阻止主線程。無論它是否也是UI線程,您的方法似乎都無法爲網絡活動提供單獨的線程。 – 2014-09-10 21:27:10
如果你使用的鞦韆,您可以使用SwingUtilities.invokeLater(Runnable)
或SwingUtilities.invokeAndWait(Runnable)
在事件線程上執行Runnable
。
如果您正在運行某個其他框架,它可能有自己的API用於將事件注入UI線程。如果您要創建一個香草AWT的應用程序,例如,你可能能夠做到這一點:
java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent(event);
其中event
封裝你想有發生在UI線程上執行的操作。但是,這可能會違反許可要求。
- 1. 在Java中簡單交換
- 2. Java簡單線程和單線程IllegalMonitorStateException
- 3. Java線程簡單隊列
- 4. 簡單的線替換未在Java中
- 5. java線程簡單的愚蠢程序
- 6. 簡單交換程序的JavaScript
- 7. 對java線程的簡單懷疑
- 8. 簡單的Ping Pong Java線程
- 9. 在java中的「簡單」線程池
- 10. 檢查/解決交叉線程操作
- 11. 簡單的Git分支交換工作流程
- 12. 簡單的通訊操作
- 13. 簡單線程管理 - Java - Android
- 14. Java簡單線條繪製程序
- 15. Java線程:運行一個簡單的java線程程序輸出混淆
- 16. Java線程和操作系統線程之間的通信
- 17. java線程交錯
- 18. 簡單的ASP表單驗證 - 交換?
- 19. 如何在單線程中使用java實現多線程操作系統?
- 20. 簡單SQL接合操作
- 21. bash腳本簡單操作
- 22. 簡單的線程問題
- 23. VB.net簡單的多線程
- 24. Python中的簡單線程
- 25. 表單提交操作
- 26. 爲什麼Java不提供簡單的交換功能?
- 27. C#中的線程操作
- 28. 多線程隊列操作不比單線程速度更快
- 29. java編程和java單線程多線程問題(單線程與多線程)
- 30. 簡單的C++交換功能
在* general *中,通過使用共享對象和正確的同步策略。 – 2014-09-10 18:59:35