线程安全/线程锁
线程安全问题出现在并发的环境下,
多个线程访问同一个资源,可能会出现线程安全问题
1.什么是线程安全:
在多线程访问和使用共享资源的情况下,线程在运行的时候可能被打断,变为阻塞状态,失去执行权。
例如i ++,i++不是原子操作 ! 其执行要分为3步: 1、读内存到寄存器; 2、在寄存器中自增; 3、写回内存。
因为不是原子操作,所以i可以被打断。
ps“补充:原子性、可见性、指令重排——线程安全问题围绕这三点。
如何解决:加同步锁
2.如何使用同步锁(互斥锁)
1》同步代码块
格式:synchronized(监视器/锁){需要同步的内容}
监视器:JAVA中任何一个对象都是一个监视器,也就是锁、
要保证互斥性,所有的线程必须使用同一个监视器。(即线程对自己去加锁没意义)
因此,在以继承父类作为方法时,使用object 和this均无法锁定
代码实例:售票系统
首先需要一个ticket类
//售票系统 public class Ticket { int tick=100;//总得票数 }
然后是User类