Lock锁 线程状态概述
Lock锁
java.util.concurrent.locks.Lock机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作,同步代码块/同步方法具有的功能Lock都有,除此之外更强大,更体现面向对象。
Lock锁也称同步锁,加锁与释放锁方法化了,如下:
public void lock() :加同步锁。
I
public void unlock():释放同步锁
卖票案例出现了线程安全问题
4S小兹口推
卖出了不存在的票和重复的票
解决线程安全问题的三种方案:使用Lock锁java.util.concurrent.Locks.Lock接口
Lock实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作lock接口中的方法:
void Lock()获取锁。
void unLock()”释放锁。
java.utiL.concurrent.locks.ReentrantLock implements Lock接口
使用步骤:
1.在成员位置创建一个Reentrantlock对象
2.在可能会出现安全问题的代码前调用Lock接口中的方法Lock获取锁
3.在可能会出现安全问题的代码后调用Lock接口中的方法unLock释放锁




线程状态概述
线程状态 导致状态发生条件
NEW(新建) 线程刚被创建,但是并未启动。还没调用start方法。
Runnable(可运行) 线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作
Blocked(锁阻塞)当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状一个线程在等待另一个线程执行一个(唤醒)动作时,该线程进入Waiting状态。进入这个
Waiting(无限等待) 一个线程在等待另一个线程执行一个(唤醒)动作时,该线程进入Waiting状态。进入这个状态后是不能自动唤醒的,必须等待另一个线程调用notify或者notifyAll方法才能够唤醒。
TimedWaiting(计时等待) 同waiting状态,有几个方法有超时参数,调用他们将进入Timed Waiting状态。这一状态将
一直保持到超时期满或者接收到唤醒通知。带有超时参数的常用方法有Thread.sleep . object.wait。
TERMINATED已退出的线程处于这种状态。


浙公网安备 33010602011771号