java基础--25.多线程的改进--Lock显式地加锁和释放锁
来源:互联网 发布:sony walkman 软件 编辑:程序博客网 时间:2024/05/15 23:50
JDK5中Lock锁的使用
虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock
接口:Lock
包含方法:
- void lock() 获取锁
- void unlock() 释放锁
- 直接已知子类:ReentrantLock
代码改进:使用Lock进行加锁和释放锁的操作
将原来方法中的synchronized同步方法中包含的代码的头和尾用lock 和 unlock 进行锁的操作
public class SellTicket implements Runnable { private int tickets = 100; private Lock lock = new ReentrantLock(); @Override public void run() { while(true){ //加锁 lock.lock(); if(tickets > 0){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+ "正在出售第"+(tickets--)+"张票"); } //释放锁 lock.unlock(); } }}
可以看到,采用这样的方法,有助于理解代码
0 0
- java基础--25.多线程的改进--Lock显式地加锁和释放锁
- 并发编程学习总结(四) :java 显式锁ReentrantLock使用详解之lock()\unlock() 加锁与释放锁
- 《深入浅出 Java Concurrency》—锁机制(三) 加锁的原理 (Lock.lock)
- 《深入浅出 Java Concurrency》—锁机制(三) 加锁的原理 (Lock.lock)
- java多线程学习之——多线程中几种释放锁和不释放锁的操作
- Java多线程的synchronized和Lock
- Java多线程释放锁
- Java多线程锁释放
- java的加锁和解锁
- Java 多线程加锁
- java 多线程 加锁
- java多线程加锁
- Java多线程基础——Lock类
- Java多线程基础——Lock类
- Java多线程基础——Lock类
- Lock的使用 java多线程
- Java多线程--Lock的使用
- java多线程Lock的使用。
- Impala各版本新特性
- 常用linux命令
- spring boot 与mybatis 整合配置 日志打印
- 使用JPush碰到的奇怪问题
- 反射机制脑补
- java基础--25.多线程的改进--Lock显式地加锁和释放锁
- 关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()的使用
- 新到的一天,我也来发一篇文章了
- 论文发表
- Android Sqlite insert后得到自增主键
- HTML H5之ASCII 代码转义字符集实体编号
- React Native 工程初始化过慢解决办法+运行时产生的问题解决方案
- 全面解读HTTP Cookie
- Could not find method com.umeng.analytics.d.a问题