![](https://img-blog.csdnimg.cn/5ad8fb4e8d844c7e8e3fc5a967d87348.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
并发编程
文章平均质量分 57
Java并发编程
最差的一届
不会造火箭的螺丝工不是一个好螺丝工。
展开
-
多线程并发调用feign,outcome返回NullPointerException
遇到的问题看过我之前的文章能发现我从小就有一个并发梦,并且也是对线程协程纤程异步以及并发包有一些了解。这次的接口正好需要多次查询,并发调用feign请求提上日程。List<Future<CurveLineDataVO>> futureList = Lists.newArrayList();for (CurveDTO curveDTO : curveDTOList) { RequestContextHolder.setRequestAttributes(RequestConte原创 2022-03-31 17:49:18 · 2866 阅读 · 0 评论 -
concurrent.locks包阅读
AbstractQueuedSynchronizerJDK中实现并发编程的核心,平时我们工作中经常用到的ReentrantLock,CountDownLatch等都是基于它来实现的。AbstractQueuedSynchronizer的介绍和原理分析深入理解AQS(AbstractQueuedSynchronizer)ReentrantLockReentrantLock是JDK层面的同步控制API,Synchoronized是JVM层面提供同步控制的关键字。面试官:谈谈synchroniz原创 2022-02-15 16:54:53 · 162 阅读 · 0 评论 -
原子类源码阅读
Unsafe 类提供了硬件级别的原子操作Java并发包(java.util.concurrent)中大量使用了CAS操作(比较并替换操作 compareAndSwap)CAS乐观锁与ABA问题原子类型的使用&Unsafe&CASAtomicIntegerFieldUpdater,主要是原子性地更新对象的int类型属性,该属性无须被声明成AtomicInteger,也不用synchronized进行同步。AtomicIntegerFieldUpdater源码详解A.原创 2022-02-15 10:45:13 · 160 阅读 · 0 评论 -
白话IO模型的演进
本文只是概括思路,具体概念具体底层机制还请看其他文章。以餐厅点餐为例子。服务员是本例子的主角。客人:IO请求服务员:线程炒菜时:IO未就绪状态炒好菜:IO就绪了上菜:程序处理IO请求的数据后厨:内核客人菜单:IO请求的数据同步阻塞每来一位客人,派一个新服务员把客人菜单送到后厨,炒好菜之前服务员寸步不离。此时的服务员进入阻塞状态让出时间片,相当于神游天地,需要重新进入就绪态才能被cpu调度炒好菜后,服务员亲自上菜。同步非阻塞每来一位客人,派一个新服务员把客人菜单送到后厨,炒原创 2022-02-10 14:29:33 · 297 阅读 · 0 评论 -
异步编程的解决方案
异步编程的目标提高cpu利用率,减少响应时间。异步编程的解决方案每个编程语言或者某些框架某些包,或多或少都对异步有相应的支持。实现思路无外乎几种,比如回调,监听,非阻塞IO。各语言的解决方案倒是有多种协程-用同步的方式写异步代码async/awaityield 生成器CallbackPromise模式reactor模式发布/订阅模式,观察者模式消息队列(以上概念只是一个简单堆砌,肯定有重复部分)每个语言还有各种异步框架或者工具包。...原创 2021-10-25 13:48:39 · 240 阅读 · 0 评论 -
没人讲得清?同步、异步、阻塞、非阻塞
前言几个月前就搜过大量这方面的博文,以为自己懂了。经过几个月的沉淀,再次阅读这些内容才发现之前懂的皮毛而已,或许几个月后又有新的理解百度百科另外,百度百科的这一版本真的让人欲哭无泪,先不说这个解释是否得当,起码是有一个明显的错误:非阻塞允许多个线程同时进入临界区学过操作系统的都知道,临界区指的是一段代码,而临界资源的互斥访问是互斥锁信号量这些控制的。假如一个文件同时读写,那肯定乱套。学海无涯,我不敢认定自己绝对正确,但是,上面那句话要么大错特错,要么重点跑偏而这位朋友写这句话的出处也被我找到了原创 2020-08-22 22:07:50 · 92 阅读 · 0 评论