![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA并发编程
JAVA并发编程知识体系讲解与总结
m0_37611440
这个作者很懒,什么都没留下…
展开
-
JAVA线程池简介
一、线程池的优势1.节约系统资源。我们知道线程的创建和销毁都是要耗费系统资源的,我们利用线程池可以重复利用线程,避免了线程的过多创建和消耗。2.减少用户响应时间。我们执行一个任务,一般要经过线程创建、任务执行、线程销毁三个步骤,每个步骤都是要消耗时间的,我们用线程池可以节约创建和销毁时间,从而减少用户响应时间3.便于管理线程。我们知道线程属于系统的稀缺资源,如果因为编写代码的问题,无限创建线程,会大量消耗系统资源,甚至系统崩溃。市容线程池可以统一管理线程的创建和销毁,便于监控、调优。二、线程核心类T原创 2020-06-15 21:00:15 · 224 阅读 · 0 评论 -
HashMap分析(1.8为主)
一、为什么要用HashMap1.顺序表(数组、ArrayList):一片物理上连续的大小确定的存储空间,可以快速定位,查找方便,做删除和新增慢(增加和删除要大量移动元素)2.链表:空间上不连续,逻辑上连续,删除和新增快,查找慢(查找要轮询)所以HashMap就应运而生,取上面2个数据结构的优势二、什么是HashMapHashMap是Map的一个实现类,根据键的hashCode值存储数据,即存的是key、value的键值对,可以快速定位。只允许一个key为空,允许多个value为空。是线程不安全的原创 2020-06-09 16:06:51 · 202 阅读 · 0 评论 -
JAVA并发编程梳理与学习七(AQS)
一、AQS(AbstractQueuedSynchronizer)定义及作用同步队列器,可以用来构建锁或者其他同步组件,它使用volatitle定义了一个int型的同步变量表示同步状态,通过内置的FIFO队列来完成竞争资源线程的调度工作。这个是并发大神Doug Lea设计的二、AQS使用思路我们看AbstractQueuedSynchronizer方法,它是一个抽象类,自己本身并没有实现任何同步方法,里面只是定义了一些获取、改变同步状态来给自定义开发同步组件的开发者使用,既可以实现独占式锁(ReenT原创 2020-06-01 09:59:28 · 192 阅读 · 0 评论 -
JAVA并发编程梳理与学习六(Lock和Condition 接口)
一、Lock被称为显示锁。既然已经有synchronized为什么还要定义Lock呢?使用过synchronized关键字获取锁的都知道,synchronized获取锁和释放锁太死板,有以下缺点。一旦一个线程用synchronized获取锁,别的竞争锁的线程都要处于等待状态,除非该线程执行完锁定代码或者线程抛出异常释放锁,别的等待线程才有重新竞争锁的机会。所以会出现下面问题:一旦拿到锁的线程,如果由于线程调用不释放锁的阻塞方法或者该线程要处理的业务耗时较长,那么其他线程只能处于等待状态,这样会影响程序原创 2020-05-29 12:58:13 · 175 阅读 · 0 评论 -
JAVA并发编程梳理与学习五(原子操作CAS)
一、原子操作1.什么是原子操作?一个操作一旦开启就不会被打断,一直到操作完成。类似于事务,要么不执行,要执行就执行完,再去执行别的任务。2.如何实现原子操作(1)原创 2020-05-27 15:17:48 · 126 阅读 · 0 评论 -
JAVA并发编程梳理与学习四(CountDownLatch和CyclicBarrier)
一、CountDownLatch1.闭锁。CountDownLatch可以等其他线程完成一些工作后再执行。例如,应用主线程再等框架里面的其他线程加载完一些东西后,再执行就可以使用CountDownLatch2.CountDownLatch是通过一个计数器实现的,计数器初始值为初始任务数量。每当完成一个任务后,计数器减1(需要调CountDownLatch.countDown()方法),当计数器减为0后,表示所有任务已经完成,然后再闭锁上等待await()方法的线程就会被唤醒,继续执行**3.注意:**原创 2020-05-25 21:13:29 · 138 阅读 · 0 评论 -
JAVA并发编程梳理与学习二(线程之间的共享和协作)
七、理解run和start方法先看start源码我们创建线程时,会先new一个线程对象,然后通过start方法来和操作系统交互,所以start是启动一个线程。而run方法一般写业务逻辑,只是一个java方法,在哪个线程调用就是实现哪个线程业务逻辑。八、线程生命周期...原创 2020-05-19 12:44:12 · 328 阅读 · 0 评论 -
JAVA并发编程梳理与学习一(线程基础概念解读)
引言:编程3年多了,感到自己知识体系零散,把自己知识体系梳理和学习一下,每个体系都由入门–》初步应用–》高阶–》源码分析组成欢迎大家提意见原创 2020-05-18 11:36:30 · 734 阅读 · 0 评论