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循环,可变参数,自动装箱/拆箱,枚举类型
2020/7/14 Java之增强for循环泛型List接口Set接口