java
极品小蛋挞
微信:liyaoqiang722
邮箱:794452369@qq.com
欢迎交流!
展开
-
Java中的锁
公平锁多个线程按照申请锁的顺序来获取锁,先来后到。在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁;如果不是,就会加入到等待队列中,以后会按照 FIFO 的规则从队列中取到自己。非公平锁上来就尝试占有锁,如果尝试失败,就再采用类似公平锁的方式。吞吐量比公平锁大。Synchronized 是一种非公平锁。多个线程获取锁的顺序并不...原创 2019-11-25 00:44:03 · 120 阅读 · 0 评论 -
Java 之 JUC
JUCJUC 是指 Java 中的三个包:(1)并发:package java.util.concurrent;并发和并行:并发是多个线程同时访问一个数据;并行是多个线程同时在做不同的事情。(2)原子:package java.util.concurrent.atomic;(3)锁:package java.util.concurrent.locks;CountDownLatch 类...原创 2019-11-25 00:43:39 · 282 阅读 · 0 评论 -
volatile关键字
volatile关键字先来分享一篇写的非常好的关于 volatile 博客《Java并发编程:volatile关键字解析》,里面也详细的介绍了原子性、可见性和有序性,再来谈一谈自己的一些理解:并发编程中又是那个概念:原子性、可见性、有序性;并发程序如果想要正确地执行,必须要保证原子性、可见性以及有序性。volatile 能够保证有序性和可见性,但是不能够保证原子性,所以是无法替代 synchr...原创 2019-11-16 14:54:42 · 228 阅读 · 0 评论 -
java异步执行业务逻辑
java异步执行业务逻辑1、创建线程池:Java通过Executors提供四种线程池:a、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。b、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。c、newScheduledThreadPool 创建一个...原创 2018-12-07 10:53:23 · 2434 阅读 · 0 评论 -
HashMap 源码深度解析
HashMap 剖析(1)HashMap 结构概述:HashMap 的底层使用 数组+单项链表,jdk1.8后,当链表过长时,会将链表转成红黑树,时间复杂度由 O(n) 变成了 O(logn)。(2)HashMap 的 put() 过程a、对 key 求 hash 值。计算下标(通过 hash(Object key) 方法);b、如果没有碰撞,直接放入桶中;c、如果发生碰撞,以链...原创 2018-12-19 18:26:05 · 232 阅读 · 0 评论