先回顾一下,已经有4天没更新了。其实上周五有准备要写一篇的,关于最近的面试。但是还没定下来就没敢随便发出来。而这周开始刚好又多个项目告急,实在没抽出时间更新。

今天想着无论如何都要更新一篇了。虽晚但也要完成。

主题也是读书笔记,关于线程带来的风险。

线程带来许多好处,但同时其风险也是显然的

  1. 安全性问题
    • 线程安全性可能是非常复杂的。在没有充足同步的情况下,多个线程中的操作执行顺序是不可预测的,甚至会产生奇怪的结果。
    • 竞态条件(Race Condition)是一种常见的并发安全问题。
  2. 活跃性问题
    • 活跃性关注的目标,即”某件正确的事情最终会发生”。但某个操作无法继续执行下去时,就会发生活跃性问题。
    • 串行程序中,活跃性问题的形式之一就是无意中造成的无限循环。
    • 线程中,则是另外的表现形式,例如死锁:线程A等待线程B释放其持有的资源,而线程B永远都不会释放。
  3. 性能问题
    • 包含有单线程程序相同的性能问题
    • 多线程还带来新的问题:上下文切换(Context Switch)操作的开销;同步机制的开销,增加共享内存总线的同步流量;

并发性错误,通常是难以分析的

  1. 依赖于不同线程的事件发生时序,难以重现

本文作者:Tobin
本文地址http://www.thirteenyu.com/2018/04/18/tech-java-concurrency-in-practice-02/
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!