读书人

桃园县结义二三事之Java线程同步原理

发布时间: 2012-10-31 14:37:31 作者: rapoo

桃园结义二三事之Java线程同步原理

引子:
话说东汉末年,小摊刘大、小贩关二、杀猪张三在桃园插草为香八拜结义,今日吃完了酒且说这酒劲一上头,哥仨就寻思了咱几个也都有几斤拳头,不如就在这桃花山下问些钱银来使,于是凑份子淘了一匹枣色瘦马和一把崩牙大刀,准备先干几日买卖。

且说这第一日,富公子公孙瓒骑着一匹白马打北边要过这桃花山口。张三二话不说抢过崩牙大刀两口唾沫搓手心卷起袖管就要动手,这关二左手提腰右手拂髯不急不慢就骑上了这匹枣色瘦马。这三弟,两条腿怎么跟四条腿的干,就是追也追不上啊只有吃土的份;二哥嘛追倒是能追上,没有兵刃在手追上的直接结果显然就是肉包子打狗,刘大就合计着关键还折掉一匹枣色瘦马,不能这么干哪连连摆手。于是第一日,兄弟三人眼睁睁看着富公子慢条条踱马过山......

话外音:兄弟三人未遂的核心问题就在于,获得枣色瘦马与崩牙大刀的操作不是原子操作。


1、线程同步

同步是多线程中的重要概念。同步的使用可以保证在多线程运行的环境中,程序不会产生设计之外的错误结果。

假定多线程同时执行操作:global_amount = global_amount + amount;由于该操作不是原子操作,那么全局的global_amount可能就可能会出现讹误。使用javap反汇编该操作的指令如下:

?