![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程并发
文章平均质量分 81
steamyao
github地址:https://github.com/steamyao
展开
-
线程池的使用与分析
一 关于 ThreadPoolExecutor转载:https://www.cnblogs.com/dolphin0520/p/3932921.html.在jdk1.8中,标识线程状态的runState,用 AtomicInteger ctl 来表示。线程池的7个核心参数:corePoolSize:核心线程数量maximumPoolSize:最大线程数量keepAlive...转载 2018-12-27 14:29:55 · 137 阅读 · 0 评论 -
浅谈--Lock锁 与 Condition
一 Lock锁简介1.用处:Lock锁与synchronized一样,都是可以用来控制同步访问的。2.有了synchronized,为什么还要Lock锁呢?那就要谈到synchronized的缺点,主要是三个方面。A 有时候用synchronized修饰的代码,访问它需要很长时间,下一个要访问同一代码块的线程就要等待阻塞很长的时间。如果我想要下一个线程在等待一段时间后,如果还没...转载 2018-12-26 21:49:45 · 1293 阅读 · 0 评论 -
浅谈volatile 与 synchronized
一 volatile1,不用volatile关键字首先,让我们了解一下JAVA的内存模型。从图中可以看出:①每个线程都有一个自己的本地内存空间--线程栈空间。线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作②对该变量操作完后,在某个时间再把变量刷新回主内存会发生的问题:可能造成一个线程在主内存中修改了一个变量的值,而另外一个线程还继续使...转载 2018-12-25 21:17:37 · 442 阅读 · 0 评论 -
浅谈AQS --JAVA
一 AQS能干什么AQS是对列同步器AbustactQueuedSynchronizer的简称,位于juc包下。你所看见的锁包括 ReentrantLock、ReentrantReadWriteLock,还有同步组件 CyclicBarrier等,它的内部都是通过AQS实现的。通过学习AQS,你可以写出自己的锁与同步组件。二AQS内部实现1.同步队列(一个FIFO双向队列)...转载 2018-12-24 21:24:34 · 258 阅读 · 0 评论 -
CountDownLatch.CyclicBarrier和 Semaphore
一 CountDownLatch1.使用场景(与join方法类似) 1:某一线程在开始运行前等待n个线程执行完毕。 2:实现多个线程开始执行任务的最大并行性。强调的是多个线程在某一时刻同时开始执行。类似于赛跑,将多个线程放到起点,等待发令枪响,然后同时开跑。2.用法创建 CountDownLatch countDownLatch = new CountDown...转载 2018-12-24 10:15:14 · 88 阅读 · 0 评论 -
线程间通信Demo
一 实现生产者/消费者两个线程交替执行我们以生产面包线程 和 消费面包线程做例子面包类public class Bread { //面包个数 private int num; //面包id private int id; //生产面包 public synchronized void creat(){ //面包不...转载 2019-03-13 21:56:20 · 84 阅读 · 0 评论 -
原子类的实现(JDK1.8)
Java提供的原子类是靠CAS+volatile 实现的,CAS 是一种乐观锁。源码分析(以AtomicInteger为例) private volatile int value;//递增加detla public final int getAndAdd(int delta) { //三个参数,1、当前的实例 2、value实例变量的偏移量 3、当前...转载 2019-03-14 11:18:41 · 319 阅读 · 0 评论 -
happen-before原则
一 作用我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before (简要的说就是,如果A线程满足happen-before B线程,那么A线程对变量的操作,都能被B线程观察到。)1. 如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前...转载 2019-03-14 19:48:37 · 226 阅读 · 0 评论 -
乐观锁 悲观锁 CAS
原文:https://blog.csdn.net/qq_34337272/article/details/81072874一 乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_co...转载 2019-03-10 19:47:30 · 175 阅读 · 0 评论