java并发编程

摘要:
之前对并发编程的一些层次和基本概念不清晰,今天总结和梳理一下

概述

可以这么理解
原子指令实现了锁
锁又实现了较大的原子操作
阻塞机制是基于锁来实现的
阻塞机制、锁又实现了线程同步和线程安全

关于锁:

0层

原子指令 流水线
缓存一致性协议

1 层 Java层

volatile(利用缓存一致性协议) 轻量级的synchronized
当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
synchronized(线程同步)
可以认为代码块是变量了
同一时间只能被一个线程所执行,它所限定的区域前后有两个指令 monitorenter指令 monitorexit

2 层

排他锁:
Lock 主要的优点是可以显示释放锁 而且可以连环的锁定和释放 基于synchronized实现
重入锁

非排他锁
读写锁:读者线程是可以同时访问的 但是写线程是排他的

3 层:Condition接口 锁/唤醒机制:

基于调用上面第2层的锁来实现的

任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、
wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以
实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等
待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的。

原子操作:

底层:

原子指令
cpu流水线
1.使用总线锁保证原子性
2.第二个机制是通过缓存锁定来保证原子性

java层

2 java的原子操作
(1)使用循环CAS实现原子操作
(3)使用锁机制实现原子操作
偏向锁、轻量级锁和互斥锁

线程同步/安全

在这里插入图片描述

进程间通信

上面讲了这么多,最后的落脚点,其实就是通信

https://www.cnblogs.com/hapjin/p/5492619.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值