多线程
文章平均质量分 75
qlql489
你可以被打倒,但不能被打败
展开
-
TransmittableThreadLocal的错误用法
前言ThreadLocal能够在单个线程中传递参数,使用可以用在系统参数的传递或者在链路跟踪中传递trace相关信息,需要说明的是单单使用ThreadLocal是不会出现ThreadLocal值线程共享的,但仅仅使用ThreadLocal还不够,如果代码中有使用异步,ThreadLocal就无能为力了,这时可以使用JDK自带的InheritableThreadLocal,这次ThreadLocal变量线程共享,就是因为使用了InheritableThreadLocal。我们的项目使用springboot原创 2022-02-16 22:09:56 · 1713 阅读 · 2 评论 -
AQS中的condition是如何实现的
condition的作用condition的使用场景其实很多,涉及到条件判断的并发场景都可以用到,比如:阻塞队列的ArrayBlockingQueue中做队列满和空的条件判断CyclicBarrier中做阻塞与唤醒所有线程的判断DelayQueue中的阻塞获取队列数据的判断线程池ThreadPoolExecutor中awaitTermination方法的条件判断condition怎么用呢?在使用synchronized时我们可以使用wait()、notify()、notifyAll()方法原创 2022-02-16 22:02:42 · 403 阅读 · 0 评论 -
SimpleDateFormat与DecimalFormat的并发安全
java中并发安全需要注意的类原创 2022-02-16 21:50:11 · 2607 阅读 · 0 评论 -
java多线程编程的核心——AQS原理解析
AQS是什么java concurrent包中有很多阻塞类如:ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore、Synchronous、FutureTask等,他们的底层都是根据aqs构建的,它可以说是java多线程编程最底层核心的抽象类。既然这么重要,我们就来看看它底层原理到底是什么。aqs全称AbstractQueu...原创 2018-10-31 10:32:18 · 300 阅读 · 0 评论 -
AQS原理解析(二、共享模式)
上一篇介绍了AQS独占模式的原理,参考链接AQS原理解析(一),这篇介绍一下AQS的共享模式如何实现的。共享模式可以做什么java concurrent包中的很多阻塞类可以一次控制多个线程的挂起和唤醒,比如Semaphore、CountDownLatch,他们内部都继承了AQS并实现了tryAcquireShared,tryReleaseShared方法共享模式逻辑线程调用acquire...原创 2018-11-18 19:35:09 · 295 阅读 · 0 评论