JAVA线程安全

线程安全/线程锁

线程安全问题出现在并发的环境下,

多个线程访问同一个资源,可能会出现线程安全问题

1.什么是线程安全:

在多线程访问和使用共享资源的情况下,线程在运行的时候可能被打断,变为阻塞状态,失去执行权。

例如i ++,i++不是原子操作 ! 其执行要分为3步: 1、读内存到寄存器; 2、在寄存器中自增; 3、写回内存。

因为不是原子操作,所以i可以被打断。

ps“补充:原子性、可见性、指令重排——线程安全问题围绕这三点。

 

如何解决:加同步锁

2.如何使用同步锁(互斥锁)

1》同步代码块

格式:synchronized(监视器/锁){需要同步的内容}

监视器:JAVA中任何一个对象都是一个监视器,也就是锁、

要保证互斥性,所有的线程必须使用同一个监视器。(即线程对自己去加锁没意义)

因此,在以继承父类作为方法时,使用object 和this均无法锁定

代码实例:售票系统

首先需要一个ticket类

//售票系统
public class Ticket {
    int tick=100;//总得票数

}

然后是User类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值