并发
文章平均质量分 73
baihaiyang99
这个作者很懒,什么都没留下…
展开
-
CAS原子操作
原子操作所谓原子操作是指不会被线程调度机制打断的操作,当某次操作一旦开始,就一直运行到结束,中间不会有任何中断。举个例子:A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:从A的帐户中减去1000块钱。如果A的帐户原来有3000块钱,现在就变成2000块钱了。在B的帐户里加1000块钱。如果B的帐户如果原来有2000块钱,现在则变成3000块钱了。如果在A的帐户已经减去了1000块钱的时候,忽然发生了意外,比如原创 2021-07-02 17:04:36 · 419 阅读 · 0 评论 -
常用的并发工具类
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier、Semaphore和ExchangeCountDownLatchCountDownLatch是一个同步计数器,初始化的时候 传入需要计数的线程等待数,可以是需要等待执行完成的线程数,或者大于。作用:用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。是一组线程等待其他的线程完成工作以后在执行,相当于加强版join,其中:await():阻塞当原创 2021-07-02 17:03:05 · 228 阅读 · 0 评论 -
ForkJoin详解
Fork/Join是一个分而治之的任务框架,如一个任务需要多线程执行,分割成很多块计算的时候,可以采用这种方法。动态规范:和分而治之不同的是,每个小任务之间互相联系。工作密取:分而治之分割了每个任务之后,某个线程提前完成了任务,就会去其他线程偷取任务来完成,加快执行效率。同时,第一个分配的线程是从队列中的头部拿任务,当完成任务的线程去其他队列拿任务的时候是从尾部拿任务,所以这样就避免了竞争。在Java的Fork/Join框架中,使用两个类完成上述操作: 1.ForkJoinTask:我们要使用F原创 2021-07-02 17:00:19 · 9644 阅读 · 0 评论 -
ThreadLocal总结
ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLocal内部就是一个ThreadLocalMap。ThreadLocal是如何为每个线程创建变量的副本的:1,首先,在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals,这个threadLocals就是用来存储实际的变量副本的原创 2021-07-02 16:59:22 · 94 阅读 · 0 评论 -
volatile关键字
内存模型的相关概念计算机在执行程序时,每条指令都是在CPU中执行的,在执行指令过程中,会涉及到数据的读取和写入。程序运行过程中的临时数据是存放在主存(物理内存)当中的,需要将主存中的数据读取到内存中,而CPU执行速度很快,这时就存在一个问题,从内存读取数据与向内存写入数据的过程跟CPU执行指令的执行速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速原创 2021-07-02 16:58:13 · 54 阅读 · 0 评论