Ervin

真正的强者是认清了生活的本质,并且去热爱他的人。


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

JavaGuide之各种锁

发表于 2018-01-05 | 分类于 技术
字数统计: 1.3k | 阅读时长 ≈ 4

背景

多线程的本质其实就是各种线程对静态资源的合理使用问题,怎么能最大限度发挥CPU性能执行任务。锁这种概念就是解决多个线程抢占资源问题的办法,当A线程使用资源时起时不希望B线程也去使用,因为如果同时操作静态资源会导致读写不一致等问题。

各种锁的分类

以下的分类都是站在不同角度对锁这种概念的分类,相互之间并没有必然的关系。

阅读全文 »

JavaGuide之volatile

发表于 2018-01-04 | 分类于 技术
字数统计: 1.9k | 阅读时长 ≈ 6

背景

Java中并发程序正确地执行,必须要保证原子性、可见性以及有序性,只要有一个没有被保证,就有可能会导致程序运行不正确。

  • 原子性:一个操作或者多个操作要么全部执行完成且执行过程中不被中断,要么就不执行。
  • 可见性:当多个线程同时访问同一个变量时,一个线程修改了这个变量的值,其它线程能够立即看到修改的值。
  • 有序性:程序执行的顺序按照代码的先后顺序执行。

volatile其实就是解决上面“可见性”的关键字,它可以看作是轻量级的Synchronized,它保证了共享变量的可见性。为什么会存在可见性这种问题呢?下面看下Java的内存模型。

阅读全文 »
1…1011
Ervin Zhang

Ervin Zhang

stay hungry, stay foolish

102 日志
4 分类
91 标签
RSS
GitHub E-Mail Twitter
© 2026 Ervin Zhang | Site words total count: 159.8k
本站访客数:次 |
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4