会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Jemb
博客园
首页
新随笔
联系
管理
订阅
随笔分类 -
JUC
并发包
Volatile理解
摘要:java内存模型中,每个线程有自己的工作内存,同时还有一个共享的主内存。 为什么要让每个线程都有自己的工作内存呢? 线程运行的代码对应的是一些指令是由CPU执行的!但是CPU每次执行指令运算的时候,要是每次需要一个变量的值,都从主内存加载,性能会比较差! 要是线程的代码在执行过程中,就可以直接从自己
阅读全文
posted @
2019-10-04 21:23
Jemb
阅读(181)
评论(0)
推荐(0)
Synchronized理解
摘要:我们可以利用synchronized关键字来对程序进行加锁。它既可以用来声明一个synchronized代码块,也可以直接标记静态方法或者实例方法。 synchronized怎么实现线程的同步? 早期的synchronized属于重量级锁,依赖于mutex lock实现,线程之间的切换涉及到 用户态
阅读全文
posted @
2019-10-04 18:03
Jemb
阅读(266)
评论(0)
推荐(0)
CAS理解
摘要:CAS: 如果多个线程想对 count 变量进行自增操作,最先想到的是使用synchronized。 初步方案: 虽然随着Java版本更新,也对synchronized做了很多优化(偏向锁,轻量级锁),但是处理这种简单的累加操作,仍然显得“太重了”。多个线程使用synchronized,不就相当于让
阅读全文
posted @
2019-10-02 10:28
Jemb
阅读(378)
评论(0)
推荐(0)
JUC简介
摘要:包含以下5个部分: 1.Tools 工具:(CountDownLatch,CyclicBarrier,Semaphore,Executors,Exchange) 2.Lock :(ReentrantLock,Condition) 3.Atomic :(AtomicInteger,AtomicBool
阅读全文
posted @
2019-09-29 23:25
Jemb
阅读(261)
评论(0)
推荐(0)
AQS理解
摘要:ReentrantLock内部包含了一个AQS对象,也就是AbstractQueuedSynchronizer类型的对象。这个AQS对象就是ReentrantLock可以实现加锁和释放锁的关键性的核心组件。 线程A,B尝试进行加锁的过程: CountDownLatch应用场景:线程协调使用的时减法操
阅读全文
posted @
2019-09-29 23:04
Jemb
阅读(204)
评论(0)
推荐(0)
公告