解决线程安全问题的三种方案

1>同步代码块
格式:
synchronized(锁对象){
可能会出现线程安全问题的代码(访问了共享数据的代码)
}
注意:
1.通过代码块中的锁对象,可以使用任意的对象
2.但是必须保证多个线程使用的锁对象是一个
3.锁对象的作用:
把同步代码块锁住,只让一个线程在同步代码块中执行
2>同步方法
使用步骤:
1.把访问了共享数据的代码抽出来放到一个方法中
2.在方法上添加synchronize修饰词
格式:
修饰符 synchronized 返回值类型 方法名(参数列表){
可能会出现线程安全问题的代码
同步方法中的锁对象是
实现类对象 new RunableImpl
也就是this
也可以使用静态
}
3>使用lock锁
lock实现了比使用synchronized 方法和语句可获得的更广泛的锁操作
lock接口中的方法:
void lock()获得锁
void unlock()释放锁
使用步骤:
1.在成员位置创建一个实现接口类的对象
2.在可能出现安全问题的代码前调用lock接口中的方法lock获取锁
3.在可能出现安全问题的代码后调用lock接口中的方法unlock释放锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值