上一页 1 2 3 4 5 6 7 8 9 10 ··· 27 下一页
摘要: 基本用法 class Job{ private ReentrantLock lock = new ReentrantLock(); // 共享变量 private String data = null; /** * 临界方法 */ public void deal(){ // 加锁 lock.loc 阅读全文
posted @ 2020-02-25 10:51 露娜妹 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 首先你要引入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.0.RELEASE</version> </dependency> 然后 阅读全文
posted @ 2020-02-24 18:40 露娜妹 阅读(541) 评论(0) 推荐(1) 编辑
摘要: 建立个实体类 import lombok.Getter; import lombok.Setter; import lombok.ToString; @Getter @Setter @ToString public class Book { private String name; public B 阅读全文
posted @ 2020-02-04 22:42 露娜妹 阅读(1692) 评论(0) 推荐(1) 编辑
摘要: Future 从JDK1.5开始,提供了Future来表示异步计算的结果,一般它需要结合ExecutorService(执行者)和Callable(任务)来使用。 示例 输出 即使异步任务等待了5秒,也依然先于消息输出,由此证明get方法是阻塞的。 Future只是个接口,实际上返回的类是Futur 阅读全文
posted @ 2020-01-07 17:26 露娜妹 阅读(1823) 评论(1) 推荐(0) 编辑
摘要: 先看一下大体结构 ThreadLocal(线程本地变量),作用是让每个线程都维护一份独立的变量副本,解决了变量并发访问冲突的问题。表面上看,变量是存储在ThreadLocal里面的,实则不然:1. ThreadLocal只是个“工具类”,对外暴露了get、set、remove接口;2. 内部实现:变 阅读全文
posted @ 2020-01-06 17:27 露娜妹 阅读(710) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap 内部结构 在JDK1.8之前的实现结构是:ReentrantLock+Segment+HashEntry+链表 JDK1.8之后的实现结构是:synchronized+CAS+Node+链表或红黑树(与HashMap一致) 而1.8之前锁的是Segment,1.8 阅读全文
posted @ 2019-12-20 17:25 露娜妹 阅读(437) 评论(1) 推荐(2) 编辑
摘要: HashMap 内部结构 内部是一个Node数组,每个Node都是链表的头,当链表的大小达到8之后链表转变成红黑树。 put操作 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node< 阅读全文
posted @ 2019-12-17 17:30 露娜妹 阅读(274) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 众所周知,它能解决一个任务必须在其他任务完成的情况下才能执行的问题,代码层面来说就是只有计数countDown到0的时候,await处的代码才能继续向下运行,例如: 运行结果: 源码 实际上内部十分简单,里面只有一个AQS的子类 下面看具体做了什么事情 先来看await 阅读全文
posted @ 2019-12-16 17:15 露娜妹 阅读(1425) 评论(0) 推荐(0) 编辑
摘要: 线程安全可以概括为三个方面:原子性、可见性和有序性。 原子性:对于涉及共享变量的操作看做一个整体,在同一时间内,只能由一个线程执行,在其它线程看来,这部分操作要么尚未开始,要么已经完成。Java中,基本类型除了long和double,其它类型变量的写操作都是原子性的。 可见性:一个线程修改了共享变量 阅读全文
posted @ 2019-12-12 17:04 露娜妹 阅读(494) 评论(0) 推荐(1) 编辑
摘要: LinkedTransferQueue 功能 全名 简述 基于链表的的无界队列。队列的头是某个生产者在队列中停留时间最长的元素。队列的尾部是某个生产者在队列中时间最短的元素。 注意,与大多数集合不同,size方法不是一个常量时间操作。由于这些队列的异步性,确定当前元素的数量需要遍历元素,因此如果在遍 阅读全文
posted @ 2019-12-06 18:29 露娜妹 阅读(352) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 27 下一页