基本概念 1.AQS:AbstractQueuedSynchronizer类 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。 (01) 独占锁 -- 锁在一个时间点只能被一个 ...
分类:
编程语言 时间:
2017-05-31 10:29:13
阅读次数:
193
ReentrantLock简介 Reentrantlock是一个可重入的互斥锁,又被称为独占锁。 Reentrantlock:分为公平锁和非公平锁,它们的区别体现在获取锁的机制上是否公平。“锁”是为了保护竞争资源,防止多个线程同时操作线程而出错,ReentrantLock在同一个时间点只能被一个线程 ...
分类:
编程语言 时间:
2017-05-31 00:22:22
阅读次数:
193
线程标识 创建、退出、等待、取消线程 线程属性 可重入和线程安全 线程安全:多个线程可以同时的、安全的调用同一个函数 重入:例如 main() 调用 malloc() 时产生信号,中断原有流程,进入信号处理函数,信号处理函数中再次调用 malloc(),称为重入。从栈帧上说,malloc() 出现了 ...
分类:
编程语言 时间:
2017-05-26 14:34:27
阅读次数:
198
信号是系统用来异步通知一个进程某些事件发生了的机制。从效果上来说,有点像中断。信号发生时,打断原有执行过程,进入信号处理函数(如果注册了的话)或默认处理(忽略或终止程序),结束后恢复原有流程。默认情况下,信号处理过程中可能会被其它信号继续中断,所以需要考虑各种可能的情况,比如库函数重入的问题。信号处 ...
分类:
其他好文 时间:
2017-05-26 00:42:13
阅读次数:
245
每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁。获得内置锁的唯一途径就是进入由这个锁保护的同步代码块或方法。 当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。然而,由于内置锁是可重入的 ...
分类:
编程语言 时间:
2017-05-24 13:37:56
阅读次数:
175
WinExec不仅会造成延迟,并且还会引起消息的重入。 以下是调用堆栈: WinvoiceCC.exe!CWinvoiceCCDlg::OnMsgHttpReq(unsigned int wParam=38434384, long lParam=0) 行624 C++ mfc90d.dll!CWnd ...
什么是可重入锁,不可重入锁呢?"重入"字面意思已经非常明显了,就是能够又一次进入。可重入锁,就是说一个线程在 获取某个锁后,还能够继续获取该锁,即同意一个线程多次获取同一个锁。比方synchronized内置锁就是可重入的 ,假设A类有2个synchornized方法method1和method2, ...
分类:
其他好文 时间:
2017-05-19 18:33:20
阅读次数:
97
【简述】 wait()和notify()方法是和synchronized关键字合作使用的。 Condition是和重入锁相关联的,通过ReentrantLock.newCondition()生成一个与当前重入锁绑定的Condition实例。 利用Condition对象,可以让线程在合适的时间等待,或 ...
分类:
其他好文 时间:
2017-05-18 01:18:52
阅读次数:
175
本章主要讲并发线程的常见的两种锁。重入锁和读写锁 一:重入锁(ReentrantLock) 概念:重入锁,在需要进行同步的代码加锁,但最后一定不要忘记释放锁,否则会造成锁永远不能释放,其他线程进不了 代码解析: 实例化:Lock lock = new ReentrantLock(); 锁定:lock ...
分类:
编程语言 时间:
2017-05-17 13:48:48
阅读次数:
212
一.synchronized的功能扩展:重入锁(java.util.concurrent.locks.ReentrantLock) 重入锁可以完全替代synchronized关键字。在JDK 5.0的早期版本中,重入锁的性能远远好于synchronized,但从JDK 6.0开始,JDK在syn-c ...
分类:
编程语言 时间:
2017-05-14 00:57:49
阅读次数:
210