我的 java web 服务提供了许多方法,每个方法在调用时都会启动一个不同的线程(操作包括 mysql 数据库调用)。我想确保操作按照它们被调用的顺序执行,所以没有线程会抢在另一个之前完成,有效地同步访问 Web 服务。
实现这一点的最佳方法是什么?有没有更聪明的方法来做到这一点?我可以使用任何工具/预制解决方案/库吗?
我的 java web 服务提供了许多方法,每个方法在调用时都会启动一个不同的线程(操作包括 mysql 数据库调用)。我想确保操作按照它们被调用的顺序执行,所以没有线程会抢在另一个之前完成,有效地同步访问 Web 服务。
实现这一点的最佳方法是什么?有没有更聪明的方法来做到这一点?我可以使用任何工具/预制解决方案/库吗?
我们已经使用 SingleThreadExecutor 实现了这个东西。您可以将所有请求提交给 SingleThreadExecutor,它会以正确的顺序依次执行它们。
因此,您的每个方法都应该生成一个可以使用 SingleThreadExecutor 执行的新线程。
希望这可以帮助。
如果您确实需要按调用的确切顺序执行服务,一次一个,那么实现此目的的最简单方法是使用队列。每个 Web 服务在队列上排队一个“命令模式”对象,队列由读取命令并执行它们的单个线程处理,然后将结果返回给最初排队请求的等待线程。
在此之前,我会重新检查您的设计,因为此要求将阻止您的应用程序扩展到大量请求。