多线程
qq_38075852
这个作者很懒,什么都没留下…
展开
-
线程池ThreadPoolExecutor
线程池什么是线程池在 Java 中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足为了解决这个问题,就有了线程池的概念,线程池的核心逻辑是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分配给线程池中的线程来执行就行,任务处理完以后这个线程不会被销毁,而是等待后续分配任务。同时通过线程池来重复管原创 2020-06-16 20:57:48 · 286 阅读 · 0 评论 -
多线程ConcurrentHashMap
ConcurrentHashMapCHM 的使用ConcurrentHashMap 是 J.U.C 包里面提供的一个线程安全并且高效的 HashMap,所以ConcurrentHashMap 在并发编程的场景中使用的频率比较高,那么这一节课我们就从ConcurrentHashMap 的使用上以及源码层面来分析 ConcurrentHashMap 到底是如何实现安全性的put方法(初始化阶段)final V putVal(K key, V value, boolean onlyIfAbsent) {原创 2020-06-02 20:49:18 · 478 阅读 · 0 评论 -
多线程Condition以及并发工具使用
ConditionCondition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒例:public class ConditionWait implements Runnable{ private Lock lock; private Condition condition; public Condi...原创 2020-05-02 09:13:21 · 249 阅读 · 0 评论 -
多线程AQS(AbstractQueuedSynchronizer)介绍分析
J.U.C 简介Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等LockLock 在 J.U.C 中是最核心的组件lock的实现Lock 本质上是一个接口,它定义了释放锁和获得锁的抽象方法,定义成接口就意味着它定义了锁的一个标准规范,也同时意味着锁的不同实现Reetran...原创 2020-04-30 21:21:52 · 254 阅读 · 0 评论 -
多线程Volatile关键字
volatile的作用volatile可以是多处理器环境下保证共享变量的可见性什么是线程的可见性?在单线程的环境下,如果向一个变量先写入一个值,然后在没有写干涉的情况下读取这个变量的值,那这个时候读取到的这个变量的值应该是之前写入的那个值。这本来是一个很正常的事情。但是在多线程环境下,读和写发生在不同的线程中的时候,可能会出现:读线程不能及时的读取到其他线程写入的最新的值。这就是所谓的可见性...原创 2020-04-23 20:02:59 · 207 阅读 · 0 评论 -
多线程基础入门
创建线程的几种方式继承Thread类创建线程public class ThreadDemo extends Thread{ @Override public void run() { }} ThreadDemo thread=new ThreadDemo(); thread.start();实现Runnalbe接口创建线程public class ...原创 2020-04-20 20:43:40 · 220 阅读 · 0 评论