摘要: 一、集合(Collection)介绍 1.1为什么需要Collection Java是一门面向对象的语言,就免不了处理对象 为了方便操作多个对象,那么我们就得把这多个对象存储起来 想要存储多个对象(变量),很容易就能想到一个容器 常用的容器我们知道有-->StringBuffered,数组(虽然有对 阅读全文
posted @ 2020-07-13 16:58 叉不到鱼的harpoon 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 一.垃圾回收 1.对象存储位置流程: 先在栈中申请 然后申请堆中的threadlocal 然后堆 2.垃圾回收算法 标记清除、复制、标记整理、分代回收 标记清除算法: 对垃圾对象进行标记然后直接清除。 两个不足: 效率不高 空间会产生大量碎片 复制算法: 把空间分成两块,每次只对其中一块进行 GC。 阅读全文
posted @ 2020-07-10 10:37 叉不到鱼的harpoon 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 一、什么是ThreadLocal 声明:本文使用的是JDK 1.8 可以这样理解:ThreadLocal提供了线程的局部变量,每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离。 简要言之:往ThreadLocal中填充的变量属 阅读全文
posted @ 2020-07-10 09:42 叉不到鱼的harpoon 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 一、基础铺垫 首先我们来个例子: public class AtomicMain { public static void main(String[] args) throws InterruptedException { ExecutorService service = Executors.ne 阅读全文
posted @ 2020-07-09 10:04 叉不到鱼的harpoon 阅读(285) 评论(0) 推荐(0) 编辑
摘要: Java为我们提供了三个同步工具类: CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量) 这几个工具类其实说白了就是为了能够更好控制线程之间的通讯问题。 一、CountDownLatch 1.1CountDownLatch简介 CountDownL 阅读全文
posted @ 2020-07-09 09:39 叉不到鱼的harpoon 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 一、死锁讲解 在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,不再程序往下执行。我们只能通过中止并重启的方式来让程序重新执行。 这是我们非常不愿意看到的一种现象,我们要尽可能避免死锁的情况发生! 造成死锁的原因可以概括成三句话: 当前线程拥有其他线程需要的资源 当前线程等待其他 阅读全文
posted @ 2020-07-08 14:03 叉不到鱼的harpoon 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 一、线程池简介 线程池可以看做是线程的集合。在没有任务时线程处于空闲状态,当请求到来:线程池给这个请求分配一个空闲的线程,任务完成后回到线程池中等待下次任务(而不是销毁)。这样就实现了线程的重用。 我们来看看如果没有使用线程池的情况是这样的: 为每个请求都新开一个线程! public class T 阅读全文
posted @ 2020-07-08 13:49 叉不到鱼的harpoon 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 上一篇已经将Lock锁的基础AQS简单地过了一遍了,因此本篇主要是讲解Lock锁主要的两个子类: ReentrantLock ReentrantReadWriteLock 一、ReentrantLock锁 比synchronized更有伸缩性(灵活) 支持公平锁(是相对公平的) 使用时最标准用法是在 阅读全文
posted @ 2020-07-06 10:25 叉不到鱼的harpoon 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一、AQS是什么? 首先我们来普及一下juc是什么:juc其实就是包的缩写(java.util.concurrnt) 不要被人家唬到了,以为juc是什么一个牛逼的东西。其实指的是包而已 我们可以发现lock包下有三个抽象的类: AbstractOwnableSynchronizer Abstract 阅读全文
posted @ 2020-07-02 15:52 叉不到鱼的harpoon 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Java多线程加锁机制,有两种: Synchronized 显式Lock 接下来就讲一下这两种加锁方式。 一、synchronized锁 1.1synchronized锁是什么? synchronized是Java的一个关键字,它能够将代码块(方法)锁起来 它使用起来是非常简单的,只要在代码块(方法 阅读全文
posted @ 2020-06-30 13:24 叉不到鱼的harpoon 阅读(162) 评论(0) 推荐(0) 编辑