
JUC
zyk1.
愿你历尽千帆 归来仍是少年
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
生产者消费者问题 传统版+Lock版
题目 现在有生产者消费者两个线程 可以对初始值为0的一个变量进行操作 实现生产者线程对该变量加1 消费者线程立刻对该变量减1 实现交替 来10轮 (我们要求生产1个后 马上就进行消费)(消费一个后 就马上进行生产)注意 生产者加1之后 消费者立马减1 结果应该是 1 0 1 0 1 0 …传统版package com.zyk;//资源...原创 2020-04-05 22:59:57 · 133 阅读 · 0 评论 -
Synchronized和Lock的区别
Synchronized和Lock的区别我们首先先大致的说一下他们的区别 然后举ReentrantLock实现精确唤醒的例子synchronized是关键字 属于JVM层面Lock是具体类 (java.util.concurrent.Locks.Lock)synchronized 不用用户去手动释放锁 当synchronized代码执行完成之后会自动让线程释放锁的占用Reent...原创 2020-04-05 22:38:40 · 149 阅读 · 0 评论 -
生产者消费者问题 阻塞队列版
生产者消费者问题 阻塞队列版package com.zyk;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.Ato...原创 2020-04-05 22:22:42 · 182 阅读 · 0 评论 -
阻塞队列
组成介绍种类分析jdk提供了7个阻塞队列 分别是ArrayBlockingQueue :由数组结构组成的有界阻塞队列LinkedBlockingQueue :一个由链表结构组成的有界阻塞队列PriorityBlockingQueue :一个支持优先级排序的无界阻塞队列DelayQueue:一个使用优先级队列实现的无界阻塞队列SynchronousQueue:一个不存储元素的阻塞...原创 2020-04-04 10:42:22 · 138 阅读 · 0 评论 -
可重入锁+自旋锁+读写锁
可重入锁我们来看什么是可重入锁可重入锁的核心意思 是同一个线程在外层方法获取锁的时候 在进入内层方法会自动获取锁这里我们分别举synchronized 和 ReentrantLock的例子synchronized是可重入锁package com.robot;class Phone{ //外层方法 public synchronized void sendMes() {...原创 2020-04-04 10:36:21 · 237 阅读 · 0 评论 -
volatile笔记
volatile笔记volatile 关键字定义 Java虚拟机提供的轻量级同步机制特性 保证可见性 不保证原子性 禁止指令重排JMM结构规范JMM规定了所有的变量都存储在主内存(Main Memory)中。每个线程还有自己的工作内存(Working Memory),线程的工作内存中保存了该线程使用到的变量的主内存的副本拷贝,线程对变量的所有操作(读取、赋...原创 2020-03-29 10:17:45 · 143 阅读 · 0 评论 -
单例模式 双重检查判断 不一定安全
单例模式 双重检查判断 不一定安全双重检查判断public class Singleton { private static Singleton instance=null; private Singleton(){ } public static Singleton getInstance() { if(instance==null){ ...原创 2020-03-29 16:01:12 · 464 阅读 · 0 评论 -
CAS学习+ABA问题
CAS学习+ABA问题CAS定义比较和交换 (Compare And Swap)它是一条cpu并发原语 是多线程同步的原子指令作用判断内存中某个位置的值是否是预期值 如果是就更改为新的值Unsafe类中getAndAddInt()方法public final int getAndAddInt(Object var1, long var2, int var4) { in...原创 2020-03-31 11:14:11 · 195 阅读 · 0 评论