java多线程web服务中操作顺序的同步与维护

java多线程web服务中操作顺序的同步与维护,java,mysql,multithreading,web-services,synchronization,Java,Mysql,Multithreading,Web Services,Synchronization,我的JavaWeb服务提供了许多方法,每个方法在被调用时启动不同的线程(操作包括mysql数据库调用)。我希望确保操作的执行顺序与调用顺序相同,这样就不会有线程抢先完成,从而有效地同步访问web服务 实现这一点的最佳方式是什么?有没有更聪明的方法?我可以使用任何工具/预制解决方案/库吗?如果您确实需要按照调用的确切顺序执行服务,一次一个,那么实现这一点的最简单方法就是使用队列。每个web服务在队列上排队一个“命令模式”对象,队列由一个线程处理,该线程读取并执行命令,然后将结果返回给最初排队请求的

我的JavaWeb服务提供了许多方法,每个方法在被调用时启动不同的线程(操作包括mysql数据库调用)。我希望确保操作的执行顺序与调用顺序相同,这样就不会有线程抢先完成,从而有效地同步访问web服务


实现这一点的最佳方式是什么?有没有更聪明的方法?我可以使用任何工具/预制解决方案/库吗?

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


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

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

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


希望这能有所帮助。

为什么要实施此操作?事实上,您的服务将无法再扩展。。。如果您确实需要此功能,您可以简单地在“全局”对象(信号量,一次一个请求)上同步。某些方法向其他方报告数据,如果其中一个方法在另一个方法完成之前发送数据(考虑到另一个方法应该先完成),它将发送不正确的数据。