Spring线程安全问题

J2EE 码拜 7年前 (2017-05-03) 1984次浏览
假如多台机器同时通过接口向SSM框架的服务器写数据,(mysql数据库,自增id),问一下这个存在线程安全问题吗
解决方案

10

你可以看一下 周志明 写的<<深入理解Java虚拟机:JVM高级特性与最佳实践>> 这本书中有你需要的答案。
多台机器同时通过接口向SSM框架的服务器写数据
实际上这些同时访问SSM框架服务器写数据的线程的线程栈帧都是相互独立。
假如你定义的Controller,service,mapper定义了共享变量的话,就不是线程安全的。
建议你看一下,上面的书,了解一下JAVA内存模型就知道了

10

这个问题还是要具体分析一下,题主所说的服务端接口是幂等的吗?
你的接口中能否存在  select -> result -> update result  相似这样的操作?

10

SSM这边是单线程处理,没有线程安全问题
数据库有多线程处理,已经做的足够好了。它是基于连接的数据库事物

10

引用:
Quote: 引用:

这个问题还是要具体分析一下,题主所说的服务端接口是幂等的吗?
你的接口中能否存在  select -> result -> update result  相似这样的操作?

本人也不太懂,本人觉得不是幂等的,原因是有个字段存储前要先select表中的最大值,接口就是简单的调用服务层,然后服务层调用mapper进行的

关于业务的技术层面优化,还是需要特别了解具体业务的,给你举个例子,假如你当前的这个接口数据是一定会被生成的,不如通过数据库自增,让其数据提前生成,你只需要对id 进行update即可。但这样做是存在垃圾数据的。所以需要题主仔细分析一下业务。

10

引用:
Quote: 引用:

这个问题还是要具体分析一下,题主所说的服务端接口是幂等的吗?
你的接口中能否存在  select -> result -> update result  相似这样的操作?

本人也不太懂,本人觉得不是幂等的,原因是有个字段存储前要先select表中的最大值,接口就是简单的调用服务层,然后服务层调用mapper进行的

题主也可以考虑  乐观锁,


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Spring线程安全问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)