Java中的锁
来源:互联网 发布:php安装教程 linux 编辑:程序博客网 时间:2024/06/13 21:48
一、Lock锁
1.锁的用途:控制多线程并发访问共享资源的的一种方式。
2.什么叫隐式锁,什么叫显示锁
隐式锁:使用这把锁时,不需要显示的对锁进行获取和释放,就可以完成锁的功能。比如synchronized。
显示锁:正好相反,代码要显示的调用这把锁的各种控制方法,才可以完成相应的功能。比如Lock锁。
二、Lock锁的基本用法
lock.lock();
//一定要放在try外面,主要是因为如果放在内部,一旦获取锁异常,
//在unlock时,会产生IllegalMonitorStateException异常,即非法状态监视器异常。
try
{
….
}
finally{
lock.unlock();
}
三、Lock显示锁与synchronized比较
1.尝试非阻塞的获取锁:意指当前线程尝试获取锁,如果当前时刻没有线程占有这把锁,则成功获取锁,并立即返回。
2.能被中断的获取所:意指当或得所得线程,被中断时,中断异常抛出,同时占有的锁也被释放。
3.超时获取锁:在指定的时间内获取锁,所过超时未获取,则返回。
四、几个常见API
1.lock()
2.unlock()
3.tryLock()
4.new Condition()
五、重入锁,即ReentrantLock
1.含义:当一个线程占有琐时,然后该线程可以连续多次获取该锁。
六:公平锁和非公平锁
1.公平锁:采用先请求先得到FIFO的策略,效率低,吞吐量低。
2.非公平锁:与公平锁相反。
ReentrantLock锁默认是非公平的,在其构造函数里可以指定公平与否。
阅读全文
1 0
- java中的锁
- Java中的文件锁
- java中的读写锁
- Java中的锁
- java中的文件锁
- Java中的锁
- Java中的锁机制
- Java中的锁
- java中的锁
- Java中的锁
- Java中的锁
- java中的锁
- Java中的锁
- 浅谈Java中的锁
- Java中的锁
- java中的锁
- Java中的锁
- java中的锁
- 高效能人士的七个习惯——七个习惯概论
- MySQL中使用cmd命令行复制数据表
- 进程通信概述
- mysql主从复制
- 指定码表读写字符
- Java中的锁
- Android 仿iOS的PickerView控件
- 递归
- 将一个文本文档上的文本反转,第一行和倒数第一行交换,第二行和倒数第二行交换
- Linux 下监控文件自动实现swoole framework热更新
- 获取一个文本上每个字符出现的次数,将结果写在times.txt上
- IO流知识,模拟试用版软件
- 信号 核心转储 gdb调试
- 从键盘输入接收一个文件夹路径,打印出该文件夹下所有的.java文件名