![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
恶心的小达达
90后的我们,加油!
展开
-
AQS
package java.util.concurrent.locks;import java.util.concurrent.CountDownLatch;import java.util.concurrent.Semaphore;import java.util.concurrent.TimeUnit;import java.util.ArrayList;import java.u...原创 2019-10-29 00:50:57 · 165 阅读 · 0 评论 -
ConcurrentHashMap与HashMap的总结
HashMap:(1)HashMap是一种散列表,采用(数组 + 链表 + 红黑树)的存储结构;(2)HashMap的默认初始容量为16(1<<4),默认装载因子为0.75f,容量总是2的n次方;(3)HashMap扩容时每次容量变为原来的两倍;(4)当桶的数量小于64时不会进行树化,只会扩容;(5)当桶的数量大于64且单个桶中元素的数量大于8时,进行树化;(6...原创 2019-08-27 12:45:30 · 961 阅读 · 1 评论 -
ConcurrentHashMap源码解析
底层数据结构:底层实现和HashMap是一致的,各种特性也是基本保持一致。与1.7版本的区别:取消了segment的分段设置,直接使用Node数组来保存数据,并且采用Node数组元素作为锁来实现每一行数据加锁进一步减少并发冲突的概率。 将数组和单项链表的机构变成了数组+单向链表+红黑树结构。成员变量: /************************************...原创 2019-08-27 12:35:25 · 181 阅读 · 0 评论 -
ArrayList源码分析
底层实现是数组(没啥好说的这个都知道)成员变量 /** * 默认容量大小 */ private static final int DEFAULT_CAPACITY = 10; /** * 空数组,如果传入的容量为0时使用 */ private static final Object[] EMPTY_ELEMENTDAT...原创 2019-08-23 15:11:57 · 192 阅读 · 0 评论 -
HashMap源码解析
基本概念:jdk1.8的HashMap底层的数据结构是,数组+链表+红黑树,当我们存储元素的时候,如果存在hash冲突,链表的深度会不断加深,同时集合的容量会不断增加,当到达一个需要转化的点之后(如下),链表会转化成红黑树。链表的深度达到8 集合的容量达到64当我们删除元素的时候,如果红黑树中元素的数量减小到6会转换成链表结构成员变量 /** * 默认的初始化...原创 2019-08-22 14:50:30 · 299 阅读 · 0 评论 -
java基础(四) 线程(8)CountDownLatch计数器
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。public class Test002 {public static void main(String[] args) throws Interru...原创 2019-03-14 16:12:46 · 187 阅读 · 0 评论 -
java基础(四) 线程(7)CyclicBarrier循环栅栏
CyclicBarrierCyclicBarrier初始化时规定一个数目,然后计算调用了CyclicBarrier.await()进入等待的线程数。当线程数达到了这个数目时,所有进入等待状态的线程被唤醒并继续。CyclicBarrier就象它名字的意思一样,可看成是个障碍,所有的线程必须到齐后才能一起通过这个障碍。CyclicBarrier初始时还可带一个Runnable的参数...原创 2019-03-14 16:12:05 · 126 阅读 · 0 评论 -
java基础(四) 线程(6)Semaphore信号量
Semaphore是一种基于计数的信号量。它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore可以用来构建一些对象池,资源池之类的,比如数据库连接池,我们也可以创建计数为1的Semaphore,将其作为一种类似互斥锁的机制,这也叫二元信号量,表示两种互斥状态。它的用法如下:availablePermits函数用来获...原创 2019-03-13 15:53:50 · 133 阅读 · 0 评论 -
java基础(四) 线程(5)ThreadLoca
什么是ThreadLocaThreadLocal提高一个线程的局部变量,访问某个线程拥有自己局部变量。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal的接口方法ThreadLocal类接口很简单,只有4个方法,我们先来了解一下:...原创 2019-03-13 15:37:18 · 156 阅读 · 0 评论 -
java基础(四) 线程(4)线程池的创建方式
线程池四种创建方式Java通过Executors(jdk1.5并发包)提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。案例演示:newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadP...原创 2019-03-13 15:33:36 · 122 阅读 · 0 评论 -
java基础(四) 线程(3)锁
synchronized锁机制: 锁对象: 1)修饰类的实例方法锁对象为this 2)修饰类的静态方法锁对象为.class对象 3) 同步代码块 锁对象为自己指定的方法在 jdk1.5 之后,并发包中新增了 Lock 接口(以及相关实现类)用来实现锁功能,Lock 接口提供了与 sync...原创 2019-03-13 14:58:31 · 132 阅读 · 0 评论 -
java基础(四) 线程(2)java内存模型
线程的三大特性: 原子性:线程安全问题 可见性:java内存模型 有序性:jion wait 的方法 控制程序的流程JAVA内存模型的概念JMM决定一个线程对共享变量的写入何时对另一个线程可见,JMM定义了线程和主内存之间的抽象关系,线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个本地私有内存(local memory),本地私有...原创 2019-03-13 14:43:24 · 90 阅读 · 0 评论 -
java基础(四) 线程(1)基础
线程的创建方式 1)继承thread类,直接new线程的实现类 2)实现runnable接口。new Thread(new Runnable()接口的实现类)线程的五种状态: 1)新建状态 2)就绪状态。 等待cpu执行权 3)运行状态 4)阻塞状态 等待锁的释放 5)死亡状态。 run方法执行结束。关于slee...原创 2019-03-13 11:09:40 · 88 阅读 · 0 评论 -
java基础(三) 内部类
引言: 1,每个内部类最后都会被编译成为一个独立的类,生成一个独立的字节码文件 2,内部类可以方便的访问外部类的私有变量 3,成员内部类和静态内部类都可以被外部使用,不过他们都可以被声明为private—1静态内部类1,语法上:除了位置放置在其他类内部外,他与一个独立的类差别不大,可以有静态方法、静态变 量、构造方法等 ...原创 2019-03-13 11:06:20 · 84 阅读 · 0 评论 -
java基础(二) 集合
集合集合的顶层接口Iterator单列集合的顶层接口Collection双列集合的顶层接口MapArraylist 底层实现是数组查询快 增删比较慢默认大小是10 扩容为1.5元素可重复LinkedList 底层是链表查询慢增删快元素可重复HashSet ...原创 2019-03-13 10:47:53 · 85 阅读 · 0 评论 -
java基础(一)
八大数据类型 byte short int long float double char boolean 8 16 32 64 32 64 16 8 给Long类型复制后面必须加L 整数类型默认为int类型 double直接复制小数类型即可,但是对于float 声明时后面必须加f 小数常量默认为double类型 Boo...原创 2019-03-13 10:37:17 · 80 阅读 · 0 评论 -
Springboot 自定义注解(一) 基础讲解
一、定义注解的格式 public@interface 注解名 {定义体}二、依赖注解@interface上面按需要注解上一些东西,包括@Retention、@Target、@Document、@Inherited四种@Retention注解的保留策略: @Retention(RetentionPolicy.SOURCE)// 注解仅存在于源码中,在cla...原创 2019-02-28 11:41:13 · 968 阅读 · 0 评论