多线程
文章平均质量分 86
三3三
编码梦想,守护创新 —— 用Java编织安全的数字世界。
展开
-
多线程环境下的伪共享
多线程下的伪共享及解决方案原创 2023-02-09 20:01:00 · 810 阅读 · 0 评论 -
java 并发容器
什么是并发容器开发中我们常用的数据结构有四大类别:List、Set、Queue、Map,这四大类中常用的是ArrayList、LinkedList、HashMap等,这些容器都是非线程安全的。在并发情况下,会有各种问题,如果想要保证线程安全,那么需要进行加锁操作,使用起来非常不方便,这种情况下,也就开发出了专门在并发情况下使用的容器。并发容器概览ConcurrentHashMap:线程安全的HashMapCopyOnwriteArrayList:线程安全的ListBlockingQueue原创 2021-06-09 13:53:03 · 222 阅读 · 3 评论 -
AQS详解
什么是AQS?AQS:AbstractQueuedSynchronizer。 是一个用来构建锁和同步器的框架,许多同步类实现都继承了AQS,如常用的ReentrantLock/Semaphore/CountDownLatch…由以上两图可以看出,基本上所有的并发工具类都实现了AQS,可见AQS的重要性为什么需要AQS?锁和协作类都有一个共同点:闸门ReentrantLock和Semaphore,包括CountDownLatch、ReentrantReadWriteLock都有类似“协作”或原创 2021-05-19 21:48:27 · 263 阅读 · 0 评论 -
java 常用并发的工具类
线程协作、控制并发流程的工具类什么是控制并发流程?控制并发流程的工具类,作用就是帮助我们程序员更容易得让线程之间合作让线程之间相互配合,来满足业务逻辑比如让线程A等待线程B执行完毕后再执行等合作策略1.CountDownLatch倒计时门闩倒数门:例子:购物拼团;大巴,人满才会发车流程:倒数结束之前,一直处于等待状态,直到倒计时结束,此线程才继续工作。开始 -> 进入等待 -> 倒数结束 -> 继续工作类的主要方法介绍:CountDownLatc原创 2021-05-18 22:46:43 · 249 阅读 · 3 评论 -
java 原子类详解
什么是原子类?就是可以保证线程安全的原子操作的数据类型。有什么作用?原子类的作用和锁类似,为了保证并发情况下的线程安全。原子类和锁相比,要比锁的粒度更细,效率更高。下面我们就逐个介绍以上6个原子类型:Atomic*基本类型原子类:这里我们就以AtomicInteger为例做介绍其常用方法:public final int get() //获取当前的值public final int getAndSet(int newValue) //获取当前的值public final int ge原创 2021-05-17 09:41:31 · 747 阅读 · 1 评论 -
java 线程池
workQueue有三种类型:1.直接交接SynchronousQueue(无容量,直接将任务交给线程)2.无界队列LinkedBlockingQueue (无边界队列,永远填不满)3.有界队列ArrayBlockingQueue (有数队列,固定大小)添加线程规则如果线程数小于corePoolSize,即时其他工作线程处于空闲状态,也会创建一个新线程来运行新任务。如果线程数等于(或大于)corePoolSize但少于maximumPoolSize,则将任务放入队列。如果队列已满,并..原创 2021-05-13 22:11:34 · 273 阅读 · 3 评论 -
java ThreadLocal详解
什么是ThreadLocal?ThreadLocal 是一个将在多线程中为每一个线程创建单独的变量副本的类;如果创建一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本, 在实际多线程操作的时候,操作的是自己本地内存中的变量,从而规避了线程安全问题。ThreadLocal的两个作用让某个需要用到的对象在线程间隔离(每个线程都有自己的独立的对象)在任何方法中都可以轻松获取到该对象使用场景每个线程需要一个独享的对象(通常是工具类、典型需要使用的类有Simpl原创 2021-05-12 22:18:03 · 268 阅读 · 4 评论