线程同步(1)——synchronized

    先说什么是线程同步,其实线程同步是说让预定的先后顺序去执行。当用户进行一个调用时,在没有得到结果之前,其它线程不能调用这个方法。

    

    在工作中遇到这样一个问题,有一张表,它的作用就是为其他表提供主键数据,如果多个用户同时访问这张表,那就存在共享资源的问题,简单说就是容易产生脏数据,那这里就涉及到线程同步的问题。


利用synchronized是一种解决方案。分两类锁。

1.对类加锁

    将synchronized加到静态方法上,对类加锁。因为静态方法属于类。

public static synchronized int generate(String tableName){
//方法体...
}

2.对对象加锁

    在范围关键字后面去加入关键字synchronized;对某一块代码使用synchronized(this),这个方法只能一次只有一个线程进行调用,当方法执行完毕以后,其他线程才能进入。,例如synchronized(this)可以放到访问数据的执行语句块,保证了每次只有一个线程访问。

public  synchronized int generate(String tableName){
//方法体...
}


public int generate(String tableName){
//方法体....
	synchronized(this) {		
		pstmt.executeQuery();  //执行语句
	}

}


    线程同步在多用户操作系统是不得不考虑的一个问题,也是一个特别重要的问题。这是在代码中直接利用java关键字去实现线程同步,下一篇要介绍利用sql语句中悲观锁实现线程同步。



评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值