线程安全的类

可将类的所有方法进行同步(使用synchronized)构建线程安全的类:

public class SynchronizedInteger {

	private Integer value;

	public synchronized Integer getValue() {
		return this.value;
	}

	public synchronized void setValue(Integer value) {
		this.value = value;
	}
}

为何这样就是线程安全的类了呢?因为同步方法的锁是当前对象,而调用getter和setter的对象是同一个,也就是说此时在调用getter时无法调用setter,同样地,调用setter时无法调用getter,这样是实现了线程安全。但是将每个方法都同步也会带来性能问题,因为这样的话该对象在调用方法时必须等到之前调用的方法执行完毕并释放锁之后才能调用,也就是说该对象在一个时间段内只能执行一个方法。

同步方法在调用时遵循以下规则:

1、当一个线程访问“某对象”的“synchronized方法”或者“synchronized代码块”时,其他线程对“该对象”的该“synchronized方法”或者“synchronized代码块”的访问将被阻塞
2、当一个线程访问“某对象”的“synchronized方法”或者“synchronized代码块”时,其他线程仍然可以访问“该对象”的非同步代码块
3、当一个线程访问“某对象”的“synchronized方法”或者“synchronized代码块”时,其他线程对“该对象”的其他的“synchronized方法”或者“synchronized代码块”的访问将被阻塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值