1 可重入锁 可重入锁,也叫递归锁。它有两层含义,第一,当一个线程在外层函数得到可重入锁后,能直接递归地调用该函数,第二,同一线程在外层函数获得可重入锁后,内层函数可以直接获取该锁对应其它代码的控制权。之前我们提到的synchronized和ReentrantLock都是可重入锁。 通过ReEnte ...
分类:
编程语言 时间:
2020-02-02 14:04:05
阅读次数:
68
4、显式锁和AQS 显式锁 Lock接口和核心方法 package com.xiangxue.ch4; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * @au ...
分类:
其他好文 时间:
2020-02-01 14:48:15
阅读次数:
89
1 sleep 在哪里都可以用 调用Thread.sleep()但是 wait方法只能在同步方法和同步代码块中使用 wait也就是使得该线程成为阻塞状态(注意这里阻塞不是书本操作系统下的while循环实现的...我TM学傻了,这里阻塞特点1. 不耗cpu的等待;2. 线程安全;) 2.notify( ...
分类:
其他好文 时间:
2020-02-01 14:33:46
阅读次数:
87
基础知识 __基础知识之一:锁的类型__ __ 锁就那么几个,只是根据特性,分为不同的类型 __ 锁的概念 锁的三个概念 类型一:公平锁/非公平锁 公平锁:ReentrantLock(构造为公平) 非公平锁:Synchronized,ReentrantLock(构造为非公平) 类型二:乐观锁/悲观锁 ...
分类:
编程语言 时间:
2020-01-28 21:09:10
阅读次数:
82
目录 "1. ReentrantLock简介" "2.ReentrantLock和synchronized的比较" "2.1 相同点" "2.2不同点" "3.ReentrantLock相比synchronized的额外功能" "3.1 ReentrantLock可以实现公平锁。" "3.2 .Re ...
分类:
其他好文 时间:
2020-01-28 20:58:58
阅读次数:
59
ReentrantLock实现了标准的互斥锁:一次最多只有一个线程能够持有相同ReentrantLock。但是互斥通常做为保护数据一致性的很强的加锁约束,因此,过分的限制了并发性。互斥是保守的加锁策略,避免了 “写/写”和“写/读"的重读,但是同样避开了"读/读"的重叠。在很多情况下,数据结构是”频 ...
分类:
其他好文 时间:
2020-01-28 20:53:51
阅读次数:
58
1.Thread实现: import java.util.Date; import java.text.SimpleDateFormat; public class MyThread extends Thread{ @Override public void run(){ SimpleDateFor ...
分类:
编程语言 时间:
2020-01-23 22:32:19
阅读次数:
94
浅析JDK1.8 ReentrantLock源码。 写在开篇 ReentrantLock–重入锁,是实现Lock接口的一个同步组件。这篇文章建立在熟悉AQS源码的基础上,同时主要从两个方面来分析ReentrantLock: 重入性的实现原理 公平锁和非公平锁 类的继承关系 ReentrantLock ...
分类:
其他好文 时间:
2020-01-23 21:13:45
阅读次数:
74
两个锁都是依赖AQS实现的,方法基本是Sync的封装,主要看Sync的设计实现, 一、可重入独占锁ReentrantLock 1.静态内部抽象类Sync //继承AQS abstract static class Sync extends AbstractQueuedSynchronizer { p ...
分类:
其他好文 时间:
2020-01-22 18:18:05
阅读次数:
111
一、线程管理 1、创建线程 Thread、Runnable、Callable、ThreadPool 2、状态切换 3、守护线程 4、异常捕获 5、局部变量 6、线程组 7、工厂类 二、同步 1、synchronized 2、ReentrantLock 三、同步辅助类 1、Semaphore信号量 2 ...
分类:
编程语言 时间:
2020-01-21 18:27:13
阅读次数:
102