
并发编程
文章平均质量分 64
怒放de生命2010
态度很重要,方向很重要,方法很重要。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Condition实现原理和源码分析--感觉挺清晰的
https://blog.youkuaiyun.com/Seky_fei/article/details/106454445转载 2022-04-11 11:31:24 · 103 阅读 · 0 评论 -
使用spring boot的@Async实现异步调用和线程池复用
文章目录前言1.@Async异步调用2.手动创建线程池管理@Async异步的线程3.异步创建有返回值的调用前言我们在开发中经常会对执行慢的方法或不涉及主业务的方法执行异步调用。实现方式1: 可以自己手动创建原生的线程,实现异步。实现方式2:也可以使用springboot的@Async实现异步。本文主要说下springboot的@Async方式和多线程时如何自定义线程池,以及希望有返回结果时,如何用其内置的方法为我所用。1.@Async异步调用异步的原理: springboot会为代理对象原创 2022-03-29 16:20:23 · 2541 阅读 · 1 评论 -
面试题2:Java中CycliBarriar和CountdownLatch区别
CountdownLatch:一个线程(或者多个),等待另外N个线程完成某个事情之后才能执行。是并发包中提供的一个可用于控制多个线程同时开始某个动作的类,其采用的方法为减少计数的方式,当计数减至零时位于latch.Await()后的代码才会被执行,CountDownLatch是减计数方式,计数==0时释放所有等待的线程;CountDownLatch当计数到0时,计数无法被重置;CyclicBarrier:字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等原创 2022-03-17 16:15:50 · 1264 阅读 · 0 评论 -
用动画理解: 阿里为啥要强制手动创建线程池?
动画文章https://zhuanlan.zhihu.com/p/112527671关键总结:完成转载 2022-03-20 21:15:27 · 195 阅读 · 0 评论 -
如何看java中锁的对象头锁信息
https://blog.youkuaiyun.com/weixin_43477531/article/details/120293403转载 2022-03-20 11:51:08 · 282 阅读 · 0 评论 -
常见的一些锁(Locks)锁和例子
常见的一些锁(Locks)锁1 ReentrantLock2.公平锁与非公平锁3.响应中断4.限时等待5.ReentrantLock与Synchronized区别6.读写锁 ReentrantReadWriteLock7.锁降级8.condition使用9.LockSupport的pack和unpack原文链接https://blog.youkuaiyun.com/weixin_45840947/article/details/116892078转载 2022-03-17 11:40:20 · 410 阅读 · 0 评论 -
很全的后端开发之接口幂等性设计
https://blog.youkuaiyun.com/xpzhang123/article/details/104724053?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blo转载 2022-02-24 10:39:53 · 162 阅读 · 0 评论 -
ReentrantLock的特性和demo
https://blog.youkuaiyun.com/hi_red_beetle/article/details/106367280转载 2021-01-05 23:00:34 · 238 阅读 · 0 评论 -
java并发原理实战(17) -- 重排序
文章目录重排序什么是重排序数据依赖性as-if-serial语义指令重排序分类重排序会产生什么问题happen-before概述·1)程序顺序规则:·2)监视器锁规则:·3)volatile变量规则:·4)传递性:5)start()规则:6)join()规则:锁的内存语义1.锁的释放-获取建立的happens-before关系2.锁的释放和获取的内存语义volatile内存语义1.volatile...原创 2020-02-06 19:26:20 · 414 阅读 · 0 评论 -
java并发原理实战(16) --jdk8新增读写锁的升级—StampedLock
文章目录StampedLock有三种读/写模式:写、读、乐观读。写。独占锁读。共享锁乐观读。方法tryOptimisticRead()转换转载:https://blog.youkuaiyun.com/panweiwei1994/article/details/78824505StampedLock是JDK1.8新增的一个锁,是对读写锁ReentrantReadWriteLock的改进。前面已经学习了Ree...转载 2020-02-05 14:36:45 · 330 阅读 · 0 评论 -
java并发原理实战(15)-- jdk8新增LongAdder原子性操作类原理
LongAdder原理介绍接下来进行LongAdder代码简单分析介绍LongAdder类是JDK1.8新增的一个原子性操作类。AtomicLong通过CAS算法提供了非阻塞的原子性操作,相比受用阻塞算法的同步器来说性能已经很好了,但是JDK开发组并不满足于此,因为非常搞并发的请求下AtomicLong的性能是不能让人接受的。如下AtomicLong 的incrementAndGet的代码,...转载 2020-02-05 11:57:39 · 331 阅读 · 0 评论 -
java并发原理实战(14)--自己实现简易web服务器
简易web服务器0.web服务器知识储备1.简易web服务器-版本12.简易web服务器版本2-多线程版3.简易web服务器版本3-访问图片资源3.简易web服务器版本3-访问外链地址测试简易web服务器-版本4-连接池版0.web服务器知识储备web服务器知识储备,了解网络编程,其实就是java的socket。如果实现网络请求,也就是服务端能够接收客户端的请求,然后服务端再对客户端进行响应。...原创 2020-02-04 21:17:22 · 396 阅读 · 0 评论 -
java并发原理实战(13)--线程池和Executors
线程池一. 线程池简介1. 线程池的概念:2. 线程池的工作机制3. 使用线程池的原因:二. 5种常见的线程池详解1. 线程池的返回值ExecutorService简介:2. 具体的5种常用的线程池实现如下:(返回值都是ExecutorService)①Executors.newCacheThreadPool():② Executors.newFixedThreadPool(int n):③Exe...转载 2020-02-04 20:09:42 · 303 阅读 · 0 评论 -
java并发原理实战(12)--同步并发容器
文章目录1.fork/join框架示例代码:2.同步容器和并发容器①同步容器:②并发容器ConcurrentHashMapCopyOnWriteArrayListCopyOnWriteArraySetBlockingQueueLinkedBlockingQueueArrayBlockingQueueDelayQueueLinkedTransferQueueSynchronousQueue1.fo...转载 2020-02-04 12:53:01 · 300 阅读 · 0 评论 -
java并发原理实战(11)--线程间通信
线程间通信1.线程间通信之wait notify2.通过生产者和消费者理解等待唤醒机制3. condition的使用4.简易连接池实现①wait notifyAll方式②lock condition方式5.线程之间的通信--join① 使用案例:②原理6.ThreadLocal原理和使用使用原理7.并发工具类:等待多线程完成的CountDownLatch案例: 对一个文本中的所有数字并行求和8.并...原创 2020-02-02 14:51:50 · 402 阅读 · 0 评论 -
java并发原理实战(10)--AQS 和公平锁分析
文章目录AQSAQS底层使用了模板方法模式ReentrantLock锁的实现分析公平锁和非公平锁公平锁FairSync非公平锁NonfairSyncReentrantLock等待队列中元素的唤醒线程安全性问题总结AQSAQS原理AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。AQS的全称为(Ab...原创 2020-01-29 13:12:29 · 549 阅读 · 0 评论 -
java并发原理实战(9)--手动实现一个可重入锁
文章目录自定义个锁测试:线程安全测试:是否可重入自定义个锁import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;public class MyLock implements Lock { pr...原创 2020-01-27 20:45:04 · 315 阅读 · 0 评论 -
java并发原理实战(8)-- lock接口使用和认识
文章目录lock接口lock的使用lock的本质ReentrantLock的调用过程锁实现(加锁)Sync.nonfairTryAcquireAbstractQueuedSynchronizer.addWaiterAbstractQueuedSynchronizer.acquireQueued解锁Lock VS Synchronizedlock接口lock的使用lock的方法:l...原创 2020-01-27 11:04:09 · 328 阅读 · 0 评论 -
java并发原理实战(7) -- 原子类使用和原理理解
原子类使用和原理理解使用原子类AtomicInteger原理使用原子更新基本类型原子更新数组原子更新抽象类型原子更新字段public class Sequence { private int value; public int getNext() { return value++; } public static void main...原创 2020-01-26 18:44:35 · 241 阅读 · 0 评论 -
java并发原理实战(6) -- volatile的原理理解
文章目录volatile原理理解引子volatile的原理:lock指令什么时候使用volatilevolatile原理理解引子看一段代码:public class Demo { private int a= 1; public int getA() { return a; } public void setA(int a) { ...原创 2020-01-26 14:30:57 · 358 阅读 · 0 评论 -
java并发原理实战(5)--线程安全性问题和synchronized原理理解
线程安全性问题一、活跃性问题死锁饥饿活锁转载地址: <https://my.oschina.net/HuoQibin/blog/1808106>1.死锁:经典例子:“哲学家进餐”问题。死锁的解决:可以看到在jconsole中,可以用这个工具检测死锁问题:2.饥饿:当线程无法访问它所需要的资源而不能继续执行时,就发生了饥饿现象。引发饥饿最常见的资源就是CPU时...原创 2020-01-23 16:38:34 · 395 阅读 · 0 评论 -
java并发原理实战(4) -- 线程的创建方式
文章目录创建线程1.继承thread2.实现runnable接口:3.匿名内部类的方式:①重写thead类+匿名内部类②实现runnable+匿名内部类③实现runnable+重写thead类+匿名内部类4.创建既有返回值和异常的线程5.定时器timer5.线程池6. spring的多线程方式7.使用lambd表达式创建线程1.继承thread执行流程:客户端调用start()方法--...原创 2020-01-18 11:43:11 · 327 阅读 · 0 评论 -
java并发原理实战(3) -- 线程的中断和初始化
线程的中断和初始化1.多线程中start和run方法的区别?2.Thread.currentThread()与this的区别3.后台进程setDaemon有啥用4.线程的中断①暴力停止stop(不建议使用)为啥不推荐:②通过中断标志中断(推荐)③中断线程推荐写法:使用三个反人类的方法+抛出异常方方式5.暂停线程(不推荐使用)①独占资源:②不同步6.线程初始化1.多线程中start和run方法的区...原创 2020-01-17 14:28:44 · 273 阅读 · 0 评论 -
java并发原理实战(2)--线程的状态和切换
文章目录高效并发1.join的理解2.sleep的理解3.wait的理解4.线程状态5.线程状态转换①、 新建--->可运行--->被终止② 新建--->可运行--->被阻塞--->可运行--->被终止③ 新建--->可运行--->等待--->可运行--->被终止1. Object.wait()2. java.util.concurren...原创 2020-01-15 22:05:28 · 477 阅读 · 0 评论 -
java并发原理实战(1) -- 聊聊并发
聊聊并发①并发学习的阶段:②为什么要学习并发编程③并发的缺点④线程安全性问题⑤多线程与并发之间的联系和区别⑤线程与进程的联系⑥多线程一定快吗?①并发学习的阶段:•熟练掌握API,能够完成并发编程•熟读API源码,掌握其原理•理解Java虚拟机的内存模型•操作系统对并发的支持②为什么要学习并发编程•1.发挥多处理的强大能力•2.建模的简单性•3.异步事件的简化处理•4.响应更加灵...原创 2020-01-15 15:26:49 · 327 阅读 · 0 评论