并发模型之线程与锁

三个问题

  • 竞态条件
  • 死锁
  • 内存可见性

规则

  • 访问共享变量时需要同步
  • 读线程和写线程都要同步化
  • 持有锁的时间应该尽可能短
  • 按照全局的固定的顺序来获得多把锁
  • 持有锁时避免调用外星方法

java中的一些问题

  • 编译器的静态优化可以打乱代码的执行顺序
  • JVM的动态优化也会打乱代码的执行顺序
  • 硬件可以通过乱序执行来优化其性能

线程

  • 有时候一个线程的修改 可能对另一个线程不可见

java内存模型

  • 如果读线程和写线程不进行同步,就不能保证可见性
  • 同步方法
    • 获取对象内置锁
    • 开启一个线程并且通过join()检查线程是否已经终止。
    • 使用java.util.concurrent包提供的工具
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容