我正在 Java 中开发无状态代理,该代理从一个服务器获取信息并将其传输到另一个客户端。这意味着代理位于客户端和服务器之间。所以我想在代理上运行两个线程同时:一个线程(thread1)运行serverSocket并从客户端获取请求,而另一个线程(thread2)运行并与服务器进行通信。问题在于两个线程之间的同步。我正在考虑让线程1全面询问线程2关于新信息的问题。如果线程2没有新内容,他就不会回答它。什么是它们之间同步的最佳方式。我应该使用全局变量(标志)来同步它们吗?我有无国籍代理人时可以保存信息吗?
答案 0 :(得分:0)
我认为您应该将应用修改为异步模型。
您的应用需要:
- 接受传入连接的入口点 - >一个很好的例子是异步servlet(或一个专用线程)
- 一个ThreadPoolExecutor,提供固定数量的worker和一个阻塞队列(使用this构造函数)。
工作流程:
此类型号的优势是您可以使用一个线程处理一个请求。因此无需手动同步任何内容。