在java多线程Web服务中同步和维护操作顺序

时间:2013-04-02 16:07:42

标签: java mysql multithreading web-services synchronization

我的java Web服务提供了许多方法,每个方法在调用时启动一个不同的线程(操作包括mysql数据库调用)。我想确保操作按照调用它们的顺序执行,因此没有任何线程在另一个之前急于完成,实际上是对Web服务的同步访问。

实现此目的的最佳方法是什么?有没有更智能的方法呢?我可以使用的任何工具/预制解决方案/库?

2 个答案:

答案 0 :(得分:1)

如果您确实需要以一次调用的确切顺序执行服务,那么实现此目的的最简单方法是使用队列。每个Web服务在队列中对“命令模式”对象进行排队,队列由读取命令并执行它们的单个线程处理,然后将结果返回给最初对请求进行排队的等待线程。

在此之前,我会重新检查您的设计,因为此要求会阻止您的应用程序扩展到大量请求。

答案 1 :(得分:1)

我们使用SingleThreadExecutor实现了这个功能。您可以将所有请求提交给SingleThreadExecutor,它将按正确顺序依次执行它们。

因此,您的每个方法都应该生成一个可以使用SingleThreadExecutor执行的新线程。

希望这有帮助。