我有一個父線程。它的工作是排隊請求和init子線程。子線程應該從Web服務獲取數據並回調到父線程。父線程處理數據並啓動另一個子線程。問題在於回調方法中的所有內容都是由子線程而不是父線程處理的。有沒有辦法通過父線程來處理回調?換句話說,在調用回調方法而不處理它的情況下,子線程完成。從子線程回調父線程
2
A
回答
2
你需要一些設計,但對於初學者來說,如果主線程不會做任何事情,而是等待孩子完成,我就看不到子線程的要點。另一方面,如果主線程必須服務於更多的傳入請求,那麼它也不能提供來自子線程的回調。你將不得不重新考慮這一點。一個想法是一個線程收集請求並將它們推送到隊列中。子線程將它們的事件推送到相同的隊列,並且有一個單獨的線程處理隊列中的事件 - 子線程的請求和響應。
如果這樣的事情聽起來不錯,那麼千萬要用ExecutorService
來處理排隊的工作。
0
由於Marko提到您可以使用具有Future引用的ExecutorService,因此您可以將運行作業的結果返回給其父線程。
相關問題
- 1. 從父線程調用子線程方法
- 2. 如何從子線程或其他線程獲取父線程?
- 3. 從主線程中的子類線程執行回調
- 4. Python子線程塊父線程
- 5. java中的子線程塊父線程
- 6. 子線程到父線程通信
- 7. 從其他線程回調
- 8. 如何從父線程中殺死子線程 - C
- 9. 從父線程到子線程的通信
- 10. 從工作線程調用主線程回調函數
- 11. Java線程回調線程上下文
- 12. Android子線程調用主線程UI
- 13. 從子線程訪問父實例
- 14. 從子線程關閉父窗體
- 15. JNI回調線程
- 16. 線程回調到創建線程線程安全嗎?
- 17. Ruby - 從主線程控制子線程
- 18. 從被調用線程獲取信息回主線程?
- 19. 如何調回到主線程從一個BackgroundWorker線程
- 20. QThread:從主線程調用子線程方法
- 21. C++子線程終止在main()父線程退出?
- 22. 製作父線程一直等到子線程完成在VC
- 23. 父線程在子線程之前退出[python]
- 24. 子線程退出時如何通知父線程
- 25. Java中的子線程是否阻止父線程終止?
- 26. 讓父線程等到子線程完成或超時
- 27. 如何使父線程等待子線程完成 - C#
- 28. 當父線程終止時子線程退出
- 29. 如何通知父線程所有子線程都已終止?
- 30. 從線程回調呼叫類
要檢查我的理解: 主題: 主 - 與用戶交互 - > 服務 - 隊列請求,並開始 - > 處理器 - 上顯示的數據 - 處理請求(得到web服務數據) - > 瀏覽器屏幕 我是否必須有這麼多的線程或它可以做得更簡單? – user1137146 2012-04-25 12:17:48
你的意思是說你實際上有一個GUI線程,並想將長操作(WS調用)卸載到非GUI線程?這就是你要找的所有東西嗎? – 2012-04-25 12:20:52
是的。我想知道的是,當我用某些線程成功從WS中獲取數據時,是否必須創建新線程來顯示數據,或者我可以調用我的父線程來完成此操作。我不希望WS線程處理顯示數據。 – user1137146 2012-04-25 13:02:30