首页   快速返回

并发编程模型     所属分类 architecture
临界区加互斥锁  synchronized ReentrantLock
如果并发量大,锁竞争激烈,开销大

读多写少 读写锁  ReentrantReadWriteLock


计数器 使用 atomic   AtomicLong
CAS CPU原子指令 无锁结构


actor并发模型

Erlang scala akka 使用的并发模型。
一般并发线程通信有两种实现模型:共享内存和消息传递。共享内存最大的问题在于竞争,容易产生死锁等问题。
actor是一种消息传递实现并发模型,定义了actor,每个actor有一个mailbox,负责接收消息。
消息只能顺序的放到邮箱中,由actor处理


CSP模型
Golang使用CSP并发模型,与actor唯一区别是没有mailbox。使用channel进行消息传递,类似于linux的命名管道
CSP(Communicating Sequential Processes)


SMT 软件事务内存
Software transactional memory

参考数据库事务的实现,保证操作的ACID特性。通过内存日志实现对共享资源操作的原子性,commit或abort。
但由于维护日志的开销,该模型的性能要低于锁。但其优势是可以极大简化多线程编程模型,不会产生诸如死锁等问题。
银行账户转账操作,需要跨两个账户操作, 该过程的原子性可由SMT实现

上一篇     下一篇
集合遍历删除注意点

java编码规范

jvm热点线程定位

slf4j为什么用{}而不是%s

java获取系统信息

mysql MVCC 和 事务隔离级别