假如多台机器同时通过接口向SSM框架的服务器写数据,(mysql数据库,自增id),问一下这个存在线程安全问题吗
解决方案
10
你可以看一下 周志明 写的<<深入理解Java虚拟机:JVM高级特性与最佳实践>> 这本书中有你需要的答案。
多台机器同时通过接口向SSM框架的服务器写数据
实际上这些同时访问SSM框架服务器写数据的线程的线程栈帧都是相互独立。
假如你定义的Controller,service,mapper定义了共享变量的话,就不是线程安全的。
建议你看一下,上面的书,了解一下JAVA内存模型就知道了
多台机器同时通过接口向SSM框架的服务器写数据
实际上这些同时访问SSM框架服务器写数据的线程的线程栈帧都是相互独立。
假如你定义的Controller,service,mapper定义了共享变量的话,就不是线程安全的。
建议你看一下,上面的书,了解一下JAVA内存模型就知道了
10
这个问题还是要具体分析一下,题主所说的服务端接口是幂等的吗?
你的接口中能否存在 select -> result -> update result 相似这样的操作?
你的接口中能否存在 select -> result -> update result 相似这样的操作?
10
10
关于业务的技术层面优化,还是需要特别了解具体业务的,给你举个例子,假如你当前的这个接口数据是一定会被生成的,不如通过数据库自增,让其数据提前生成,你只需要对id 进行update即可。但这样做是存在垃圾数据的。所以需要题主仔细分析一下业务。
10
这个问题还是要具体分析一下,题主所说的服务端接口是幂等的吗?
你的接口中能否存在 select -> result -> update result 相似这样的操作?本人也不太懂,本人觉得不是幂等的,原因是有个字段存储前要先select表中的最大值,接口就是简单的调用服务层,然后服务层调用mapper进行的
题主也可以考虑 乐观锁,