java 22 - 14 JDK1.5以后的Lock锁

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 22 - 14 JDK1.5以后的Lock锁相关的知识,希望对你有一定的参考价值。

在之前解决线程安全的过程中,虽然我们可以理解同步代码块和同步方法的锁对象问题,

但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,

为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock

注意:Lock是个接口。

2个常用方法:
   void lock(): 获取锁。
   void unlock():释放锁。
 ReentrantLock是Lock的实现类。

 

 1 public class SellTicket implements Runnable {//别忘了这个继承接口
 2     // 定义100张票
 3     private int tickets = 100;
 4 
 5     // 定义锁对象
 6     private Lock lock = new ReentrantLock();
 7 
 8     public void run() {
 9 
10         //这里使用了不带catch的try..finally的格式,中间的代码出现问题了,就直接执行finally
11 
12         while (true) {
13             try {
14                 
15                 // 加锁,在会出现错误的代码前加锁,跟之前的一样
16                 lock.lock();
17                 
18                 if (tickets > 0) {
19                                         
20                     // 休眠0.1秒
21                     try {
22                         Thread.sleep(100);
23                     } catch (InterruptedException e) {
24                         // TODO Auto-generated catch block
25                         e.printStackTrace();
26                     }
27 
28                     System.out.println(Thread.currentThread().getName()
29                             + "正在出售第" + (tickets--) + "张票");
30                 }
31             } finally {
32                 // 解锁  中间代码一有异常,就解锁,
33                 lock.unlock();
34             }
35         }
36     }
37 }

 

以上是关于java 22 - 14 JDK1.5以后的Lock锁的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 Oracle 11g 和 jdk1.5 中使用 ojdbc14.jar

(14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型

JDK1.5-JDK10 安装指南(windows)

2020/7/14 Java之增强for循环泛型List接口Set接口

2020/7/14 java 增强for 泛型 list接口 list接口 set接口

Java基础:基础加强