运行 无状态代理中同时存在两个线程并保证它们之间的通信

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

我正在 Java 中开发一个 stateless 代理,它从一个服务器获取信息并将其传输到另一个客户端。这意味着代理位于客户端和服务器之间。所以我想 运行 代理上的两个线程 同时 :一个线程(thread1)运行s 一个 serverSocket 并从客户端获取请求,而另一个线程(thread2) 运行nning 正在与服务器通信。问题在于两个线程之间的同步。我正在考虑让线程 1 一直询问线程 2 有关新信息的信息。如果线程2没有什么新鲜事,他就不回答了。在它们之间同步的最佳方法是什么。我应该使用全局变量(标志)在它们之间进行同步吗?我有无状态代理时可以保存信息吗?

我认为您应该将您的应用修改为异步模型

您的应用需要:
- 接受传入连接的入口点 -> 一个很好的例子是异步 servlet(或一个专用线程)。
- 一个 ThreadPoolExecutor,它提供固定数量的 worker 和一个阻塞队列(使用 this 构造函数)。

工作流程:

  1. 接受请求。
  2. 将传入请求包装到(可运行)任务中。
  3. 将任务放入阻塞队列。
  4. 如果 ThreadPoolExecutor 有空闲的 worker 开始处理任务

这种模型的一个优点是您能够使用一个线程处理一个请求。所以不需要手动同步任何东西。