簡體   English   中英

在無狀態代理中同時運行兩個線程並確保它們之間的通信

[英]running two threads simultaneously inside a stateless agent and guaranting communication between them

我正在用Java開發無狀態代理,該代理從一台服務器獲取信息並將其傳輸到另一台客戶端。 這意味着代理位於客戶端和服務器之間。 因此,我正在考慮在代理上同時運行兩個線程:一個線程(線程1)運行serverSocket並從客戶端獲取請求,而另一個線程(線程2)正在運行並與服務器進行通信。 問題在於兩個線程之間的同步。 我正在考慮使線程1整個時間都在線程2中詢問新信息。 如果線程2沒有新內容,他將不會回答。 在它們之間進行同步的最佳方法是什么。 我應該使用全局變量(標志)在它們之間進行同步嗎? 擁有無狀態代理后,我可以保存信息嗎?

我認為您應該將應用程序修改為異步模型

您的應用程序需要:
-接受傳入連接的入口點->一個很好的例子是異步servlet(或一個專用線程)。
-ThreadPoolExecutor,提供固定數量的工作程序和阻塞隊列(使用構造函數)。

工作流程:

  1. 接受進來的請求。
  2. 將傳入請求打包到(Runnable)任務中。
  3. 將任務放入阻塞隊列。
  4. 如果ThreadPoolExecutor有空閑工作者開始處理任務

這種模型的優點是您可以使用一個線程處理一個請求 因此,無需手動同步任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM