无风无影

   ::  :: 新随笔  ::  ::  :: 管理

文章分类 -  多线程并发

摘要:重要概念 负数代表正在进行初始化或扩容操作 -1代表正在初始化 -N 表示有N-1个线程正在进行扩容操作 正数或0代表hash表还没有被初始化,这个数值表示初始化或下一次进行扩容的大小 重要内部类 Node担负着重要角色:key-value键值对。所有插入ConCurrentHashMap的中数据都 阅读全文
posted @ 2020-01-02 11:13 NWNS-无风无影 阅读(133) 评论(0) 推荐(0)

摘要:问题: 为什么HashTable慢? 它的并发度是什么? 那么ConcurrentHashMap并发度是什么? ConcurrentHashMap在JDK1.7和JDK1.8中实现有什么差别? JDK1.8解決了JDK1.7中什么问题 ConcurrentHashMap JDK1.7实现的原理是什么 阅读全文
posted @ 2020-01-02 09:17 NWNS-无风无影 阅读(186) 评论(0) 推荐(0)

摘要:背景 AbstractQueuedSynchronizer (抽象队列同步器,以下简称 AQS)出现在 JDK 1.5 中,由大师 Doug Lea 所创作。AQS 是很多同步器的基础框架,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于 AQS 实 阅读全文
posted @ 2019-12-25 16:14 NWNS-无风无影 阅读(346) 评论(0) 推荐(0)

摘要:要想用线程安全的队列有哪些选择?Vector,Collections.synchronizedList(List<T> list), ConcurrentLinkedQueue等 ConcurrentLinkedQueue实现的数据结构? ConcurrentLinkedQueue底层原理? 全程无 阅读全文
posted @ 2019-12-24 19:05 NWNS-无风无影 阅读(376) 评论(0) 推荐(0)

摘要:Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再将一个个的小任务运算的结果进行 join 汇总。 Fork/Join 框架与传统线程池的区别 采用“工作窃取”模式(work-stealing):它的模型大致是这样的,线程池中的每个线 阅读全文
posted @ 2019-12-24 11:13 NWNS-无风无影 阅读(120) 评论(0) 推荐(0)

摘要:Java中实现生产者消费者通常有以下几种方式: 解决问题的核心 保证同一资源被多个线程并发访问时的完整性。常用的同步方法是采用信号或加锁机制,保证资源在任意时刻至多被一个线程访问。 阅读全文
posted @ 2019-12-24 11:12 NWNS-无风无影 阅读(221) 评论(0) 推荐(0)

摘要:一、CountDownLatch CountDownLatch底层也是由AQS,用来同步一个或多个任务的常用并发工具类,强制它们等待由其他任务执行的一组操作完成。所以其数据结构可以参考AQS的数据结构,而AQS的数据结构核心就是两个虚拟队列: 同步队列sync queue 和条件队列conditio 阅读全文
posted @ 2019-12-24 11:11 NWNS-无风无影 阅读(170) 评论(0) 推荐(0)

摘要:FutureTask 为 Future 提供了基础实现,如获取任务执行结果(get)和取消任务(cancel)等。如果任务尚未完成,获取任务执行结果时将会阻塞。一旦执行结束,任务就不能被重启或取消(除非使用runAndReset执行计算)。FutureTask 常用来封装 Callable 和 Ru 阅读全文
posted @ 2019-12-24 11:10 NWNS-无风无影 阅读(399) 评论(0) 推荐(0)

摘要:JUC中多数类是通过volatile和CAS来实现的,CAS本质上提供的是一种无锁方案,而Synchronized和Lock是互斥锁方案; java原子类本质上使用的是CAS,而CAS底层是通过Unsafe类实现的。 一、什么是CAS CAS的全称为Compare-And-Swap,直译就是对比交换 阅读全文
posted @ 2019-12-24 11:10 NWNS-无风无影 阅读(252) 评论(0) 推荐(0)

摘要:一、为什么要有线程池? 主要是为了对线程进行统一分配,调优和监控,从而达到以下目的: 降低资源消耗(线程无限制地创建,然后使用完毕后销毁) 提高响应速度(无须创建线程) 提高线程的可管理性 二、线程池基本原理 Java是如何实现和管理线程池的? 从JDK 5开始,把工作单元与执行机制分离开来,工作单 阅读全文
posted @ 2019-12-24 11:09 NWNS-无风无影 阅读(152) 评论(0) 推荐(0)

摘要:ScheduledThreadPoolExecutor继承自 ThreadPoolExecutor,为任务提供延迟或周期执行,属于线程池的一种。和 ThreadPoolExecutor 相比,它还具有以下几种特性: 使用专门的任务类型—ScheduledFutureTask 来执行周期任务,也可以接 阅读全文
posted @ 2019-12-24 11:09 NWNS-无风无影 阅读(197) 评论(0) 推荐(0)

摘要:最常用的"生产者-消费者"问题中,队列通常被视作线程间操作的数据容器,这样,可以对各个模块的业务功能进行解耦,生产者将“生产”出来的数据放置在数据容器中,而消费者仅仅只需要在“数据容器”中进行获取数据即可,这样生产者线程和消费者线程就能够进行解耦,只专注于自己的业务功能即可。阻塞队列(Blockin 阅读全文
posted @ 2019-12-24 11:08 NWNS-无风无影 阅读(157) 评论(0) 推荐(0)

摘要:Copy-On-Write,写入时复制,这个技术,准确的说应该是一种思想,在很多系统设计上都会用到 。 CopyOnWriteArrayList,是一个写入时复制的容器,它是如何工作的呢?简单来说,就是平时查询的时候,都不需要加锁,随便访问,只有在写入/删除的时候,才会从原来的数据复制一个副本出来, 阅读全文
posted @ 2019-12-24 11:07 NWNS-无风无影 阅读(139) 评论(0) 推荐(0)

摘要:一、问题 什么是ThreadLocal?用来解决什么问题的? 说说你对ThreadLocal的理解 ThreadLocal是如何实现线程隔离的? 为什么ThreadLocal会造成内存泄露?如何解决 还有哪些使用ThreadLocal的应用场景? 二、ThreadLocal简介 ThreadLoca 阅读全文
posted @ 2019-12-24 11:07 NWNS-无风无影 阅读(128) 评论(0) 推荐(0)

摘要:并发容器-ConcurrentHashMap 阅读全文
posted @ 2019-12-24 11:06 NWNS-无风无影 阅读(82) 评论(0) 推荐(0)

摘要:之前用synchronized的时候,使用wait/notify可以实现线程间的通信。除此之外,JUC包里提供了类似的线程通信机制,Condition 是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒; 任何一个java对象都天然继承 阅读全文
posted @ 2019-12-24 11:04 NWNS-无风无影 阅读(268) 评论(0) 推荐(0)

摘要:ReentrantLock源码分析 1、类的继承关系 ReentrantLock实现了Lock接口,Lock接口中定义了lock与unlock相关操作,并且还存在newCondition方法,表示生成一个条件。 ReentrantLock类内部总共存在Sync、NonfairSync、FairSyn 阅读全文
posted @ 2019-12-24 11:03 NWNS-无风无影 阅读(163) 评论(0) 推荐(0)

摘要:Lock接口 Lock不是Java中的关键字而是 java.util.concurrent.locks 包中的一个接口 boolean tryLock() boolean tryLock(long time, TimeUnit unit) LockSupport简介 LockSupport用来创建锁 阅读全文
posted @ 2019-12-24 11:01 NWNS-无风无影 阅读(193) 评论(0) 推荐(0)

摘要:volatile提供了另一种解决可见性和有序性问题的方案 问题 volatile关键字的作用是什么? volatile能保证原子性吗? 之前32位机器上共享的long和double变量的为什么要用volatile?现在64位机器上是否也要设置呢? i++为什么不能保证原子性? volatile是如何 阅读全文
posted @ 2019-12-24 10:59 NWNS-无风无影 阅读(137) 评论(0) 推荐(0)

摘要:final关键字的知识点 final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误。final变量一旦被初始化后不能再次赋值。 本地变量必须在声明时赋值。 因为没有初始化的过程 在匿名类中所有变量都必须是final变量。 final方法不能被重写, final类不能被继承 接 阅读全文
posted @ 2019-12-24 10:59 NWNS-无风无影 阅读(141) 评论(0) 推荐(0)