事物隔离-数据库表锁

1多线程调用方法test1()和test2()

2两个方法调用事物

3在事物里面都实现了对同一张表的先删除后插入

4如果不用事物的话,会出现删除删除增加增加的情况,即最后结果是两条新增记录。

5使用事物后结果只能是删增删增,结果一条记录,实现了锁的功能。

@Override
publicList<Map>getProtraitDataQuality(Mapmap){
    returngetPortraitDomain().getProtraitDataQuality(map);
}
private static final Log log = LogFactory.getLog(PortraitInitCmd.class);
public void test1(){
    getTransactionTemplate().execute(newTransactionCallbackWithoutResult(){
        @Override
        protectedvoiddoInTransactionWithoutResult(TransactionStatusarg0){

            log.debug("test1start");
            log.debug("test1deletestart");
            V6SqlSessionUtil.getSqlSession().delete("PortraitDomain.testdelete");
            log.debug("test1deleteend");
            try{
                log.debug("test1sleepstart");
                Thread.sleep(5000);//延时2秒
                log.debug("test1sleepend");
            }catch(InterruptedExceptione){
                e.printStackTrace();
            }
            log.debug("test1insertstart");
            V6SqlSessionUtil.getSqlSession().insert("PortraitDomain.testinsert");
            log.debug("test1insertend");

        }

    });

}
public void test2(){
    getTransactionTemplate().execute(newTransactionCallbackWithoutResult(){
        @Override
        protectedvoiddoInTransactionWithoutResult(TransactionStatusarg0){
            try{
                log.debug("test2sleepstart");
                Thread.sleep(1000);//延时2秒
                log.debug("test2sleepend");
            }catch(InterruptedExceptione){
                e.printStackTrace();
            }
            log.debug("test2start");
            log.debug("test2deletestart");
            V6SqlSessionUtil.getSqlSession().delete("PortraitDomain.testdelete");
            log.debug("test2deleteend");

            log.debug("test2insertstart");
            V6SqlSessionUtil.getSqlSession().insert("PortraitDomain.testinsert");
            log.debug("test2insertend");
        }

       });
}

 最终结果如下:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值