线程安全
文章平均质量分 68
xzchaoo
社畜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
并发编程中的WIP技巧
介绍遇到如下场景:对于某个方法, 调用它时如果有另外一个线程正在调用该方法, 那么当前线程放弃调用, 但另外一个线程调用完毕之后必须再调用一次该方法.比如, 多个线程更新一个数据结构(这个行为是否并发安全不在本次讨论中), 然后一旦结构发生修改就将数据同步到DB. 显然同步到DB是一个相对高耗时的行为, 而且短期对数据结构的更新显然可以压缩成一次DB的更新. 这也就是我上述说的场景了.wip技巧wip = Working-In-Progress这种模式我也不知道该怎么称呼, 但我在很多地方都有原创 2021-02-19 15:11:48 · 592 阅读 · 0 评论 -
DrainLoop编程技巧
介绍最近项目里频繁涉及到并发编程, 由于我们的系统不需要强一致性, 我选择使用各种并发集合来避免锁. 项目里还大量使用了MPSC的队列(基于JCTools)和Disruptor. 另外还涉及到一些异步编程, 这里使用了Reactor来简化异步流程.之前看过Reactor/RxJava2的一些源码, 在源码里发现了一个很好用的小技巧, 我也不知道叫什么名称, 但看方法名一般是叫"drainLoop", 我就称这种技巧为DrainLoop吧.drainLoop的使用场景是这样的:在一个MPSC(原创 2020-06-16 20:52:03 · 404 阅读 · 1 评论 -
Java线程池的关闭, shutdown和shutdownNow的区别
Java线程池shutdown和shutdownNow的区别结论先说结论shutdown 标记关闭 + 会执行积压任务(因线程不足而放入queue里的) + 不打断正在执行的任务, 之后不允许添加新任务 shutdownNow = 标记关闭+ 不执行积压任务 + 打断(通过线程interrupt)正在执行的任务, 之后不允许添加新任务 对于停不下来的任务只能等到任务结束, 此过程 isTerminating 返回 true, 可以使用 awaitTemination 阻塞地等到真正关闭 .原创 2020-06-08 11:36:14 · 603 阅读 · 0 评论 -
线程安全的一些建议
介绍我比较认同的线程安全的定义: "一段代码, 被多线程访问, 多线程之间不需要任何显式的协同, 并且运行结果是正确的, 那么这段代码就是线程安全的".线程安全的程度Immutable: 不可变 Thread-safe: 单线程下行为正确, 多线程下行为也正确, 要求很高 Conditionally thread-safe: 有条件的线程安全 Thread-Compitable: 线程兼容, 本来非多线程安全, 但可以通过显示的外部同步来获得安全 Thread-hostile: 线.原创 2020-06-02 15:48:08 · 224 阅读 · 0 评论 -
关于线程安全的考虑
结论结合当前框架的线程模型不可变对象/无状态化原子操作线程本地锁原创 2019-07-23 09:15:51 · 140 阅读 · 0 评论
分享