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已退出的线程处于这种状态。

 

posted @ 2022-07-07 19:35  帕拉利斯  阅读(118)  评论(0)    收藏  举报