您的位置:首页 > 编程语言 > Java开发

java-解决业务操可能数据冲突问题

2013-09-15 22:37 405 查看
  问题提出,由于业务会出现多人同时操作,或者业务人员反复的操作,因此在业务流程中,需要对业务操作数据进行保护,由于使用数据库锁可能会引起一些难以预料的问题,因此考虑使用内存锁,设计思想:在内存中使用一个静态的链表,即时的对业务操作进行响应,类似于中断机制。在这个过程中需要考虑使用单例。具体看代码:

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.移除锁
}


问题解决,具体使用还得看业务系统的使用,思路就这样了,还得看系统的运行情况^_^。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: