关于在 Java 中使用线程的问题(免责声明 - 我对线程不是很有经验,所以请允许一些回旋余地)。
概述: 我想知道是否有一种方法可以让多个线程将要执行的操作添加到另一个线程将负责的队列中。什么顺序并不重要 - 更重要的是队列中的操作一次处理一个。
解释: 我计划托管一个小型服务器(使用 servlet)。我希望每个与客户端的连接都由一个单独的线程处理(到目前为止还可以)。但是,这些线程/客户端中的每一个都将对单个 xml 文件进行更改。但是,更改不能同时进行。
问题: 我可以让每个线程将要进行的更改提交到另一个线程将持续管理的队列吗?正如我所说,更改的顺序并不重要,只是它们不会同时发生。
此外,如果这不是最好的方法,请告知。
非常感谢。
最佳答案
这是一个合理的方法。使用无限制的 BlockingQueue
(例如 LinkedBlockingQueue
) - 对 XML 文件执行 IO 的线程调用队列上的 take
以删除下一条消息(如果队列为空则阻塞)然后处理消息以修改 XML 文件,同时提交更改到 XML 文件的线程将调用队列上的 offer
以便将消息添加到队列中。 BlockingQueue
是线程安全的,因此您的线程无需对其执行同步。
关于java - 多个线程提交要按顺序完成的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631528/