synchronized——对象锁

     synchronized的中文意思是同步的,在Java语言的它是关键字,可以用来给对象和方法或者代码加锁,当它封锁某一块代码或方法的时候,其他线程是不能访问调用这一块代码或方法的。


  示例:


public static synchronized int generate(String tableName){使用Java中synchronized方法解决线程同步问题
		String sql = "select value from t_table_id where table_name";
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		int value = 0;
		try{
			conn = DbUtil.getConnection();
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1,tableName);
			rs = pstmt.executeQuery();
			if (!rs.next()){
				throw new RuntimeException();
			}
			value = rs.getInt("value");
			value++;//自加
			modifyValueField(conn, tableName,value);
		}catch(Exception e){
			e.printStackTrace();
			throw new RuntimeException();
		}finally{
			DbUtil.close(rs);
			DbUtil.close(pstmt);
			DbUtil.close(conn);
		}
		
		return value;
	}


    所以在Java中,synchronized代码锁可以解决线程同步、高并发的问题。但它只是对代码的封锁,并不能真正的做到对数据的加锁,因为在其他的方法里同样可以对同一条数据的增删改查,所以它是不能保证数据的一致性的。并且当另一个非synchronized方法调用这个代码块的时候,将会会发生阻塞。那我们又怎么才能做到数据的正真一致性呢?请看小编的下一篇博客。

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值