java-解决业务操可能数据冲突问题
问题提出,由于业务会出现多人同时操作,或者业务人员反复的操作,因此在业务流程中,需要对业务操作数据进行保护,由于使用数据库锁可能会引起一些难以预料的问题,因此考虑使用内存锁,设计思想:在内存中使用一个静态的链表,即时的对业务操作进行响应,类似于中断机制。在这个过程中需要考虑使用单例。具体看代码:
import java.util.LinkedList; /**
*
* Description:<p></p>
* @author: JanneLeMac@gmail.com
* @version: 2013-9-14 下午10:14:47
*/
public class SendHelper {
private static LinkedList<String> sendItem=null;
private static volatile SendHelper M_INSTANCE = null;
/**
* Description: <p>use private make sure the SendHelper is unique. </p>
*/
private SendHelper(){}; public static SendHelper getInstance(){
if(null == M_INSTANCE){//if null
synchronized (SendHelper.class) {//if more than two threads run into the first null check same time
//to avoid instanced more than one time, it needs to be checked again.
if(null == M_INSTANCE){
M_INSTANCE = new SendHelper();
sendItem=new LinkedList<String>();
}
}
}
return M_INSTANCE;
}
public LinkedList<String> getSendItem() {
return sendItem;
}
public void setSendItem(LinkedList<String> sendItem) {
SendHelper.sendItem = sendItem;
}
public void addItem(String LSH){
sendItem.addLast(LSH);
}
public void removeItem(String LSH){
sendItem.remove(LSH);
} public static void main(String []args){
System.out.println("---------test beagin-----------");
//LinkedList<String> l = new LinkedList<String>();
//SendHelper.getInstance().setSendItem(l);
SendHelper.getInstance().addItem("1");
SendHelper.getInstance().addItem("2");
SendHelper.getInstance().addItem("3");
SendHelper.getInstance().addItem("4");
for(int i=0;i<SendHelper.getInstance().getSendItem().size();i++){
System.out.println(SendHelper.getInstance().getSendItem().get(i));
if("2".equals(SendHelper.getInstance().getSendItem().get(i))){
SendHelper.getInstance().removeItem("4");
}
}
System.out.println("size:"+SendHelper.getInstance().getSendItem().size());
System.out.println("---------test end-----------");
} //1.业务判断,有锁,返回提示信息
//2.加锁
//3.业务操作
//4.移除锁
}
问题解决,具体使用还得看业务系统的使用,思路就这样了,还得看系统的运行情况^_^。
java-解决业务操可能数据冲突问题的更多相关文章
- Java解决CSRF问题
项目地址: https://github.com/morethink/web-security-csrf CSRF是什么? CSRF(Cross-site request forgery),中文名称: ...
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 标签: hashmaphashmap冲突解决冲突的方法冲突 2016-0 ...
- JAVA | Java 解决跨域问题
JAVA | Java 解决跨域问题 Table of Contents 引言 什么是跨域(CORS) 什么情况会跨域 解决方案 前端解决方案 后端解决方案 具体方式 一.使用Filter方式进行设置 ...
- Java解决大文件读取的内存问题以及文件流的比较
Java解决大文件读取的内存问题以及文件流的比较 传统方式 读取文件的方式一般是是从内存中读取,官方提供了几种方式,如BufferedReader, 以及InputStream 系列的,也有封装好的如 ...
- Java轻量级业务层框架Spring两大核心IOC和AOP原理
IoC(Inversion of Control): IOC的基本概念是:不创建对象,但是描述创建它们的方式.在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务.容器负责将这些 ...
- IBM Thread and Monitor Dump Analyzer for Java解决生产环境中的性能问题
这个工具的使用和 HeapAnalyzer 一样,非常容易,同样提供了详细的 readme 文档,这里也简单举例如下: #/usr/java50/bin/java -Xmx1000m -jar jca ...
- Java解决高并发方案(帮助你我他)
一个小型的网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单.随着互联网业务的不断丰富,网站 ...
- java解决高并发问题
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研 ...
- java 解决中文乱码
//1.代码解决 public class LuanMa { public static String getNewString(String luanma){ String result = &qu ...
随机推荐
- pro*c添加SQLCHECK后编译报错PLS-S-00201
如果在pro*c中调用数据库了里的函数,就需要在proc的cfg配置文件中添加一行: SQLCHECK=SEMANTICS 但是添加之后又会出现PLS-S-00201错误,原因在与添加SQLCHECK ...
- spring 部分配置内容备忘
1.spring定时器简单配置: <bean name="taskJob" class="com.netcloud.mail.util.TaskJob"& ...
- BZOJ 4579: [Usaco2016 Open]Closing the Farm
Description 依次删去一个点和它的边,问当前图是否连通. Sol 并查集. 倒着做就可以了. 每次将一个点及其的边加入,如果当前集合个数大于 1,那么就不连通. Code /******** ...
- SVN权限管理
转自:http://www.cnblogs.com/xingchen/archive/2010/07/22/1782684.html /******************************** ...
- ajax给全局变量赋值问题解决
$.ajax({ type: "post", //以post方式与后台沟通 url: "./php/chartAjax.php", //与此php页面沟通 da ...
- 10个php笔试题
Q1 第一个问题关于弱类型 $str1 = 'yabadabadoo'; $str2 = 'yaba'; if (strpos($str1,$str2)) { echo "/"&q ...
- sizeof和strlen的区别
一.sizeof sizeof(...)是运算符,而不是一个函数. sizeof操作符的结果类型是size_t,在头文件中typedef为unsigned int,其值在编译时即计算好了, ...
- POJ 3009
http://poj.org/problem?id=3009 一个搜索的题目: 大意就是一个冰球,在冰面上滑动,你打击一次,就沿一个反向滑动,知道碰到墙就会停下,而墙则会破碎. 求从起点到终点的最短的 ...
- linux多线程下载工具mwget
linux多线程下载工具mwget 经常使用wget进行文件下载,然而wget的处理速度并不如人意.遇到一些国外的站点,经常慢得像蜗牛一般.然而为了解决这个问题,便有了mwget:m表示multi多线 ...
- libreoffice安装
centos7下libreoffice的安装 #下载安装包wget http://mirrors.ustc.edu.cn/tdf/libreoffice/stable/5.1.1/rpm/x86_64 ...