首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

从JVM懂得多线程同步和调优(一) - 迫不及待的第一篇

2013-08-04 
从JVM理解多线程同步和调优(一) - 迫不及待的第一篇??大家一看就知道了这是计算机内存模型,那么jvm内存模

从JVM理解多线程同步和调优(一) - 迫不及待的第一篇

?
?大家一看就知道了这是计算机内存模型,那么jvm内存模型和这个很类似,jvm中分为工作内存和主内存,将处理器换做线程、高速缓存换做工作内存就行了,也就是说每个线程都有自己的一个工作内存,全局有一个主内存,那么这个同步的操作就在缓存一致性这里,jvm内存模型定义了八种操作:lock、unlock、read、load、use、assign、store、write,其实synchronized就对应这里的lock与unlock,为什么说这些,我们编写的代码synchronized最后就映射到这里的lock和unlock,用synchronized修饰的代码,经过编译后会在相应的字节码前后分别添加monitorenter和monitorexit,字节码中这两个关键字就是对lock和unlock的封装。synchronized可以修饰变量或方法,那么如果我们指定了这个对象参数,修饰的就是这个对象的reference,如果没有明确指定,那就根据synchronized修饰的是实例方法还是类方法,去取对应的对象实例或class对象来作为锁的对象,当然最终的同步操作是lock、unlock为我们完成的,这个定义在一致性协议里边。简单的说就是一个线程只有执行了lock后才能执行unlock;一个线程不能执行其它线程的unlock。

?

下一篇写下,java中另外一个关键字volatile,其实用volatile修饰的变量并不能保证多线程同步。

?

?

2 楼 naoda 昨天   不错,学习了,期待后续更加精彩的文章! 3 楼 freezingsky 24 小时前   这个在java并发编程实践里就说得很清楚。包括CAS原语等

热点排行