关于线程安全:
-------------------------------
//例 1:锁加在共享资源操作之前
synchronized(xxx.class){
money--;
}
-------------------------------
//例 2:锁加在判断之前
synchronized(xxx.class){
if(money > 0){
money--;
}
}
------------------------------- 1
hspeed18 2019-09-18 20:55:45 +08:00 1
是的,然而并没有什么用,判断和修改应该是原子操作
|
2
tachikomachann 2019-09-18 20:58:49 +08:00 via Android 1
例 1 可能出现 money 小于等于 0 的情况
|
3
leonme 2019-09-19 08:48:42 +08:00 via Android 1
感觉问题没表达清楚
|
4
sagaxu 2019-09-19 09:06:29 +08:00 via Android 1
这两段代码,一个有判断,一个没判断,逻辑都不同,有可比性?
|
5
SoloCompany 2019-09-20 13:56:04 +08:00 via iPad 1
我猜,你想问的应该是 dcl
|
6
magiclz233 2019-09-24 22:54:46 +08:00 1
你想说的应该是例 1 的判断再加锁之外,判断这个操作是没有加锁的,会出现问题,但是进去之后加锁了,money--是不会出现问题的,如果锁中只有--操作,也可以 volatile 或者 atom 一些类,不需要加锁。
|