随笔分类 - 并发
一些同步组件的学习
摘要:如何正确停止线程? 停止线程应该是一种通知协作的方式,比如interrupt,但是它仅仅是通知线程,线程拥有完全的自主权,根据自身业务来判断什么时候停止,因为如果选择立即停止就可能导致数据不完整这种问题 在休眠状态的线程是否可以感应到中断 可以,程序会抛出一个异常 为什么用 volatile 标记位
阅读全文
摘要:属性:公平,互斥,可重入(业务涉及不多) 可使用redis,zookeeper,etcd实现 redis实现: 一般追求高性能使用redis redis采用单线程架构,可以保证单个命令的原子性,但是无法保证一组命令在高并发场景下的原子性(引入lua脚本) 注意点: 独占排他:setnx 防死锁: r
阅读全文
摘要:
Semaphore Semaphore 可以允许多个线程访问一个临界区。 应用:实现线程池 CountDownLatch 应用: 业务原始状态:一个线程执行查询订单,查询派送单,对比差异,写入数据库 优化后:多线程并发执行:一个线程查询订单,一个线程查询派送单,一个线程对比差异并写入数据库 问题:线
阅读全文
