栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程webservice服务端--insert多条相同数据

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程webservice服务端--insert多条相同数据

一般websercvice服务端,可以同时接收多个客户端发送的信息,并且保存数据库;

基础的写法是
1)根据关键字查询数据库表是否存在数据
2)判断查询到的消息是否存在
3)
3.1不存在数据,调用insert
3.2存在数据,调用update

上面的写法一般不会出错;

	多线程的模式下,会出现一种情况是
	例子描述:线程1:根据关键字查询了数据表没对应的数据,准备insert的时候,线程2进来一条同样的信息,根据关键字查询了数据表;同一时间点,线程1是还没insert事务提交完成,数据库表也是没有数据的,线程2 查询没有对应数据,同样调用了insert; **导致同一条数据insert两次**
	为了应对这种情况,可以添加同步锁
	例子:
			**synchronized(this){//同步锁**  
						a (//返回的数据)=select(查询语句);
						if(a==null||a.equals("***")){//判断是否存在
									insert()
						}else{
									update();
						}
			**}**

那么程序执行到这一步的时候,如果有数据在执行中,那么会等待完成后,在执行;

以上操作 试用单个服务器的情况;如果多个服务器模式,synchronized 无法阻止同一条信息多次insert

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/332780.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号