彭德崇's Blogs

公众号:不止于Java github:https://github.com/cyxpdc?tab=repositories 邮箱:1142439493@qq.com

Java并发(十二)并发模型

极客时间:Java并发编程实战 1 Actor模型:面向对象原生的并发模型 概念 Actor模型本质上是一种计算模型,基本的计算单元称为Actor,Actor之间通过消息进行通信; 在Actor模型中,所有的计算都是在Actor中执行的。 在面向对象编程里面,一切都是对象; 在Actor模型里...

2019-08-23 14:45:41

阅读数 3

评论数 0

Java并发(十一)并发案例

极客时间:Java并发编程实战 1 高性能限流器GuavaRateLimiter 令牌桶算法:记录一个下一令牌产生的时间,并动态更新它,就能够轻松完成限流功能 与信号量区别:信号量是“一次性可以有多少个线程一起执行”,限流器是“每秒最多允许几个请求通过”“1个请求/xxx秒” 申请令牌时调用acq...

2019-08-23 14:44:45

阅读数 8

评论数 0

Java并发(十)并发设计模式

极客时间:Java并发编程实战 1 Immutability模式 将一个类所有的属性都设置成final的,并且只允许存在只读方法,那么这个类基本上就具备不可变性了。 更严格的做法是这个类本身也是final的,也就是不允许继承。因为子类可以覆盖父类的方法,有可能改变不可变性 所以推荐在实际工作中,使...

2019-08-23 14:43:05

阅读数 2

评论数 0

Java并发(九)生产者·消费者实现

1.synchronized实现 队列 static class MyBlockingQueue<E> { private Queue<E> queue = null; private int limit; publ...

2019-08-23 14:38:17

阅读数 2

评论数 0

Java并发(八)线程知识点

优先级高的线程分配时间片的数量要多于优先级低的线程 设置线程优先级时,针对频繁阻塞(休眠或者I/O操作)的线程需要设置较高优先级; 而偏重计算(需要较多CPU时间或者偏运算)的线程则设置较低的优先级; 确保处理器不会被独占 线程优先级不能作为程序正确性的依赖,因为操作系统可以完全不用理会Java线...

2019-08-23 14:37:09

阅读数 8

评论数 0

Java并发(七)异步执行任务之手写线程池、定时任务、CompletableFuture

手写 表示子任务: public interface Callable<V> { V call() throws Exception; } 表示异步调用的结果: public interface MyFuture <V> { ...

2019-08-23 14:34:41

阅读数 4

评论数 0

Java并发(六)显示锁和StampedLock

显式锁 可以解决synchronized的限制 主要接口和类: 锁接口Lock,主要实现类是ReentrantLock 读写锁接口ReadWriteLock,主要实现类是ReentrantReadWriteLock 相比synchronized,显式锁支持以非阻塞方式获取锁、可以响应中断、可以...

2019-08-23 14:29:22

阅读数 2

评论数 0

Java并发(五)synchronized

synchronized 1 知识点 synchronized可以用于修饰类的实例方法、静态方法和代码块 synchronized实例方法实际保护的是同一个对象的方法调用,即当前实例对象,即this,this对象有一个锁和一个等待队列(任意对象都有一个锁和等待队列,还有另一个等待队列,表示条件队...

2019-08-23 14:26:21

阅读数 2

评论数 0

Java并发(四)并发容器

并发容器 写时拷贝技术的容器类 写时拷贝是解决并发问题的一种重要思路 有两个简单的类CopyOnWriteArrayList和CopyOnWriteArraySet 场景: 不可变对象的写操作:如String的replace方法,其并没有更改原字符串里面value[]数组的内容,而是创建了一个新字...

2019-08-23 14:20:24

阅读数 2

评论数 0

Java并发(三)并发工具

并发工具1:同步协作工具 读写锁ReentrantReadWriteLock 信号量Semaphore 倒计时门栓CountDownLatch 循环栅栏CyclicBarrier 交换者Exchanger 基于AQS实现 在一些特定的同步协作场景中,相比使用最基本的wait/...

2019-08-23 14:15:58

阅读数 4

评论数 0

Java并发(二)Java内存模型

3 Java内存模型 本质上可以理解为,Java 内存模型规范了 JVM 如何提供按需禁用缓存和编译优化的方法。 具体来说,这些方法包括 volatile、synchronized 和 final 三个关键字,以及六项 Happens-Before 规则 Happens-Before为语义增...

2019-08-23 14:09:16

阅读数 7

评论数 0

Java并发(一)并发基础

https://www.cnblogs.com/jinshuai86/p/9226164.html Java编程的逻辑 Java并发编程的艺术 极客时间:Java并发编程实战 Java并发基础知识 并发bug源头 缓存导致的可见性问题 线程切换带来的原子性问题 编译优化带来的有序性...

2019-08-23 13:58:51

阅读数 17

评论数 0

Collections源码解析

集合类关系: 1 相关方法 1.1 针对List接口的二分查找 //一个要求List的每个元素实现Comparable接口,另一个不需要,但要求提供Comparator。 public static <T> int binarySearch(List&...

2019-08-04 16:46:27

阅读数 33

评论数 0

EnumSet源码解析

来源: Java编程的逻辑 EnumSet EnumSet的实现与EnumMap没有任何关系,而是用极为精简和高效的位向量实现的; 位向量是计算机程序中解决问题的一种常用方式 1 实现原理 1.1 内部组成 final Class<E> elementType;//类型...

2019-08-03 14:43:58

阅读数 29

评论数 0

EnumMap源码解析

来源: Java编程的逻辑 如果需要一个Map的实现类,并且键的类型为枚举类型,可以使用HashMap,但应该使用一个专门的实现类EnumMap 因为枚举类型有两个特征,一是它可能的值是有限的且预先定义的,二是枚举值都有一个顺序,这两个特征使得可以更为高效的实现Map接口 EnumMap是保证顺序...

2019-08-03 11:57:43

阅读数 28

评论数 0

LinkedHashMap和LinkedHashSet源码解析

参考: Java编程的逻辑 https://blog.csdn.net/blingfeng/article/details/79974169 LinkedHashMap(JDK1.8) public class LinkedHashMap<K,V> extends Ha...

2019-08-03 10:50:32

阅读数 40

评论数 0

ArrayDeque源码解析

来源: Java编程的逻辑 基于动态扩展的循环数组实现的双端队列 一般而言,由于需要移动元素,数组的插入和删除效率比较低,但ArrayDeque的效率却非常高,因为内部是循环数组 2 实现原理 2.1 Deque接口 此接口扩展了Queue接口,可以看做一个先进先出的队列,还可以看做栈 2.2 内...

2019-08-02 22:44:21

阅读数 29

评论数 0

PriorityQueue源码分析

来源: Java编程的逻辑 1 前导 将新的头部与两个孩子节点中较小的比较,如果不大于该孩子节点,则满足堆的性质,结束,否则与较小的孩子进行交换,交换后,再与较小的孩子比较和交换,一直到没有孩子,或者不大于两个孩子节点。这个过程我们般称为siftdown 与父节点比较,如果大于等于父节点,则满足堆...

2019-08-02 17:31:13

阅读数 21

评论数 0

TreeSet源码解析

来源: Java编程的逻辑 1 实现原理 1.1 构造方法 TreeSet的基本构造方法有两个: public TreeSet() { this(new TreeMap<E,Object>()); } public TreeSet(Comparator&...

2019-08-01 21:42:34

阅读数 15

评论数 0

TreeMap源码解析

参考: Java编程的逻辑 1 前导知识 排序二叉树找到一个节点的后继节点的算法: 1.如果该节点有右孩子,则后继为右子树中最小的节点。 2.如果该节点没有右孩子,则后继为父节点或某个祖先节点,从当前节点往上找,如果它是父亲节点的右孩子,则继续找父节点,直到它不是右孩子或父节点为空,第一个非右孩子...

2019-08-01 19:39:27

阅读数 22

评论数 0

提示
确定要删除当前文章?
取消 删除