2020年12月23日
|
阅读量
-
☕️
阻塞队列
概念
队列
队列就可以想成是一个数组,从一头进入,一头出去,排队买饭
阻塞队列
BlockingQueue 阻塞队列,排队拥堵,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:
线程1往阻塞队列中添加元素,而线程2从阻塞队列中移除元素
当阻塞队列是空时,...
阅读更多
2020年12月19日
|
阅读量
-
☕️
多线程下的 HashMap 存在的问题
HashMap 在多线程下是不安全的。但是,在JDK1.8 的 HashMap 改为采用尾插法,已经不存在死循环的问题了,为什么也会线程不安全呢?我们以 put 方法为例(1.8):
假如现在有两个线程都执行到了下图的红色箭头处。当线程一判断为空之后,CPU 时间片到了...
阅读更多
2020年12月16日
|
阅读量
-
☕️
自己实现一个锁
方法一:通过自旋实现一个锁
public class SpinLock {
//原子引用线程
AtomicReference<Thread> atomicReference = new AtomicReference<>();
public v...
阅读更多
2020年12月15日
|
阅读量
-
☕️
Java锁之公平锁和非公平锁
概念
公平锁
是指多个线程按照申请锁的顺序来获取锁,类似于排队买饭,先来后到,先来先服务,就是公平的,也就是队列
非公平锁
是指多个线程获取锁的顺序,并不是按照申请锁的顺序,有可能申请的线程比先申请的线程优先获取锁,在高并发环境下,有可能造成优先级翻转,或者饥饿的线程(也就...
阅读更多
2020年12月12日
|
阅读量
-
☕️
JUC简介
JUC(java.util.concurrent)
进程和线程
进程:后台运行的程序(我们打开的一个软件,就是进程)
线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程)
...
阅读更多
2020年12月10日
|
阅读量
-
☕️
可重入锁和递归锁ReentrantLock
概念
可重入锁就是递归锁
指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁(前提:锁对象得是同一个对象)
也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块
Reentr...
阅读更多
2020年12月10日
|
阅读量
-
☕️
ArrayList的常见问题
ArrayList是什么,可以用来干嘛?
ArrayList就是数组列表,主要用来装载数据,当我们装载的是基本类型的数据int,long,boolean,short,byte…的时候我们只能存储他们对应的包装类,它的主要底层实现是数组Object[] elementDat...
阅读更多
2020年12月09日
|
阅读量
-
☕️
Spring里用了哪些设计模式?
单例模式:Spring 中的 Bean 默认情况下都是单例的。无需多说。
工厂模式:工厂模式主要是通过 BeanFactory 和 ApplicationContext 来生产 Bean 对象。
代理模式:最常见的 AOP 的实现方式就是通过代理来实现,Spring主要是使...
阅读更多