采用java和数据库两种方式进行加锁
来源:互联网 发布:全国人口普查主要数据 编辑:程序博客网 时间:2024/05/21 07:14
采用java加锁方式来同步
publicstatic synchronized int generate(StringtableName){Stringsql = "select value from t_table_id where table_name=?";Connectionconn = null;PreparedStatementpstmt = null;ResultSetrs = null;intvalue = 0;try{conn= DbUtil.getConnection();pstmt= conn.prepareStatement(sql);pstmt.setString(1,tableName);rs= pstmt.executeQuery();rs.next();// if(!rs.next()){// thrownew RuntimeException();// }value= rs.getInt("value");value++;modifyValueField(conn,tableName,value);}catch(Exceptione){e.printStackTrace();thrownew RuntimeException();}finally{DbUtil.close(rs);DbUtil.close(pstmt);DbUtil.close(conn);}returnvalue;}
采用数据库来加锁:
采用悲观锁来实现同步在sql语句后加 for update就加上了锁,在查询的时候进行加锁,在加锁后不能进行查询。提交时候后其他人才能查询。public static int generate(String tableName){//使用数据库的悲观锁for updateString sql = "select value from t_table_id where table_name=? for update";Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;int value = 0;try{conn = DbUtil.getConnection();//设置自动提交为falseDbUtil.beginTransaction(conn);pstmt = conn.prepareStatement(sql);pstmt.setString(1, tableName);rs = pstmt.executeQuery();rs.next();//if(!rs.next()){//throw new RuntimeException();//}value = rs.getInt("value");value++;modifyValueField(conn,tableName,value);//提交事务DbUtil.commitTransaction(conn);}catch(Exception e){e.printStackTrace();//回滚事务DbUtil.rollbackTranscation(conn);throw new RuntimeException();}finally{DbUtil.close(rs);DbUtil.close(pstmt);DbUtil.resetConnection(conn);DbUtil.close(conn);}return value;}
- 采用java和数据库两种方式进行加锁
- 多线程的两种加锁方式
- 加锁进行数据库更新
- JAVA连接数据库的两种方式,JDBC和JNDI
- Java线程加锁方式
- 怎样用SQL语句对数据库表进行加锁和解锁?
- 怎样用SQL语句对数据库表进行加锁和解锁?
- java链接数据库access两种方式
- java 连接数据库的两种方式
- java连接数据库两种方式
- java 对文件进行加锁
- java集合进行排序的两种方式
- java集合进行排序的两种方式
- Java 采用MD5进行加密和解密
- 在access中采用sql和absoluteposition两种方式产生随机记录的速度比较
- ASP.NET 生成二维码(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
- 详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
- mysqldump和xtrabackup两种方式进行非空库复制搭建
- 指定struct成员变量的位数
- 如何更好阅读源代码 .
- 写在前面的一些话:《Learning OpenCV》中文版 .
- IOS中定义全局变量
- 采用Filter统一控制字符集
- 采用java和数据库两种方式进行加锁
- 终于解决了fedora16部分网页打不开的问题
- 如何提高阅读源代码的效率 .
- 《暗时间》读后感
- 计算器练习
- Poj 1703 Find them, Catch them
- 東邊日出西邊雨,一方傷怨一方喜
- [Linux使用] Linux下批量删除.svn目录
- 控制文件的恢复