并发请求遇到的问题
2014-11-18 19:18
155 查看
1.业务场景
客户端的多个请求对某一个业务场景,造成在某一时刻加入相同重复的数据,让它做是否有重复的数据判断时不起作用。
2.解决办法
把该业务场景单独抽取出来,做成一个同步(synchronized)的方法,这样就可以避免多个请求时同时做执行,而是按照执行一个请求时锁住该方法,其他的请求就不能执行。
当上一个请求完成时,释放该锁,这样下一个请求才可以执行该方法。
synchronized
Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。
客户端的多个请求对某一个业务场景,造成在某一时刻加入相同重复的数据,让它做是否有重复的数据判断时不起作用。
2.解决办法
把该业务场景单独抽取出来,做成一个同步(synchronized)的方法,这样就可以避免多个请求时同时做执行,而是按照执行一个请求时锁住该方法,其他的请求就不能执行。
当上一个请求完成时,释放该锁,这样下一个请求才可以执行该方法。
synchronized
Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该object中的非加锁代码块。
private synchronized void executeDisConnectedLog(String disconnectedCount,String clientBrowser,String clientTime,String cookieUserName,String XMLHttpRequest_status,String XMLHttpRequest_readyState,String textStatus,String lastSessionId){ DisconnectedLog dislog=new DisconnectedLog(); dislog.setClientBrowser(clientBrowser); String newTime=clientTime.substring(0,4)+"-"+clientTime.substring(4,6)+"-"+clientTime.substring(6,8)+" "+ clientTime.substring(8,10)+":"+clientTime.substring(10,12)+":"+clientTime.substring(12,14); Date createTime= DateUtil.parseDate(newTime); dislog.setClientTime(createTime); dislog.setServerTime(new Date()); dislog.setReadyState(XMLHttpRequest_readyState); dislog.setStatus(XMLHttpRequest_status); dislog.setTextStatus(textStatus); dislog.setUserName(cookieUserName); dislog.setDisconnectedCount(Integer.parseInt(disconnectedCount)); dislog.setLastSessionId(lastSessionId); boolean flag=true; flag=iesLoginService.findIsExitsDisconnectedLog(cookieUserName, XMLHttpRequest_status, XMLHttpRequest_readyState, textStatus, lastSessionId); if(flag){ iesLoginService.addDisconnectedLog(dislog); } }
相关文章推荐
- 使用session时候,遇到的一个问题(请求解决方法)
- WIN7下的WCF遇到的问题:HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- WCF布署遇到问题,报错:HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
- IIS处理并发请求时出现的问题及解决
- IIS处理并发请求时出现的问题及解决
- 继续完成工作中...(日记),稍后我将写一篇实际中遇到的并发问题解决方案
- (转)IIS处理并发请求时出现的问题及解决
- nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交
- AJAX请求并发问题
- IIS处理并发请求时出现的问题及解决
- WIN7下.Net开发遇到的又一问题:HTTP 错误 500.19 - Internal Server Error,无法访问请求的页面,因为该页的相关配置数据无效。
- nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交
- WIN7下.Net开发遇到的又一问题:HTTP 错误 500.19 - Internal Server Error,无法访问请求的页面,因为该页的相关配置数据无效。
- ASP.NET开发web应用遇到的javascript跨域请求问题 推荐
- 做ssl通道时遇到“请求被中止: 未能创建 SSL/TLS 安全通道”问题的解决方法
- AJAX请求并发问题
- LINQ问题:模拟并发冲突时遇到的问题(LINQ to SQL)
- AJAX请求并发问题
- asi网络请求中遇到的一些问题的解决
- IIS处理并发请求时出现的问题及解决