由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - Java concurrency的疑惑,难道我理解错了? (转载)
相关主题
Apply lock on a class.新手问个multi-threading关于synchronized和volatile的问题
interview question:同一个Lock锁两次,性能比较差
请教:怎么把synchronize的method改成用thread 但thread safe呢?能不能讲讲IB和对冲的java developer的面试,大概会面什么
Talk a little more about How to lock a file问个面试题, 谢谢
请教一个多线程lock机制的问题size() method 为什么需要多线程保护?
发现 synchronized 的一个问题关于java的疑惑 (转载)
synchronization for countersRe: Question: Java Synchronization
synchronization 锁住了什么?java 程序中的实时控制
相关话题的讨论汇总
话题: time话题: plusone话题: java话题: write
进入Java版参与讨论
1 (共1页)
d*********g
发帖数: 38
1
【 以下文字转载自 Programming 讨论区 】
发信人: dancingfrog (Dancing Frog), 信区: Programming
标 题: Java concurrency的疑惑,难道我理解错了?
发信站: BBS 未名空间站 (Mon Aug 10 11:50:19 2015, 美东)
小弟刚开始学,有一事不明。
如果用synchronized,可以保证一个对象不会被同时写入。但我觉得就算synchronized
还是会有问题。比如x,y两个线程同时读并且试图写一个变量v
Time 0
x<--(read)--v=3
y<--(read)--v=3
Time 1
x---(write v+1)--->v //v becomes 4 after write
y---(write v+1)--->v //failed, because v is locked by x
Time 2
y---(write v+1)--->v //v is still 4, because the value read by y is 3.
这样看来,虽然synchronized可以保护写不同时进行,但无非是推迟了y写入v的时间,
问题依然是存在的。
请问这个问题java有解决吗?
F****n
发帖数: 3271
2
synchronization保证的是memory consistency
就是说在同一synchronized block里读写的结果和顺序是一致的(所以叫"
synchronized")
比如你这个y读写是分开的,如果放在一个synchronized block里就不会有问题

synchronized

【在 d*********g 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: dancingfrog (Dancing Frog), 信区: Programming
: 标 题: Java concurrency的疑惑,难道我理解错了?
: 发信站: BBS 未名空间站 (Mon Aug 10 11:50:19 2015, 美东)
: 小弟刚开始学,有一事不明。
: 如果用synchronized,可以保证一个对象不会被同时写入。但我觉得就算synchronized
: 还是会有问题。比如x,y两个线程同时读并且试图写一个变量v
: Time 0
: x<--(read)--v=3
: y<--(read)--v=3

l******n
发帖数: 577
3
Look at the code below:
public class Example {
private int i;
synchronized public void plusOne() {
i++;
}
}
what's the problem? When thread x call plusOne method, x get the monitor of
Example, y cannot do anything with the synchronized method of Example, just
block there and wait. After x has done with plusOne, y can have opportunity
to call plusOne.
d*********g
发帖数: 38
4
【 以下文字转载自 Programming 讨论区 】
发信人: dancingfrog (Dancing Frog), 信区: Programming
标 题: Java concurrency的疑惑,难道我理解错了?
发信站: BBS 未名空间站 (Mon Aug 10 11:50:19 2015, 美东)
小弟刚开始学,有一事不明。
如果用synchronized,可以保证一个对象不会被同时写入。但我觉得就算synchronized
还是会有问题。比如x,y两个线程同时读并且试图写一个变量v
Time 0
x<--(read)--v=3
y<--(read)--v=3
Time 1
x---(write v+1)--->v //v becomes 4 after write
y---(write v+1)--->v //failed, because v is locked by x
Time 2
y---(write v+1)--->v //v is still 4, because the value read by y is 3.
这样看来,虽然synchronized可以保护写不同时进行,但无非是推迟了y写入v的时间,
问题依然是存在的。
请问这个问题java有解决吗?
F****n
发帖数: 3271
5
synchronization保证的是memory consistency
就是说在同一synchronized block里读写的结果和顺序是一致的(所以叫"
synchronized")
比如你这个y读写是分开的,如果放在一个synchronized block里就不会有问题

synchronized

【在 d*********g 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: dancingfrog (Dancing Frog), 信区: Programming
: 标 题: Java concurrency的疑惑,难道我理解错了?
: 发信站: BBS 未名空间站 (Mon Aug 10 11:50:19 2015, 美东)
: 小弟刚开始学,有一事不明。
: 如果用synchronized,可以保证一个对象不会被同时写入。但我觉得就算synchronized
: 还是会有问题。比如x,y两个线程同时读并且试图写一个变量v
: Time 0
: x<--(read)--v=3
: y<--(read)--v=3

l******n
发帖数: 577
6
Look at the code below:
public class Example {
private int i;
synchronized public void plusOne() {
i++;
}
}
what's the problem? When thread x call plusOne method, x get the monitor of
Example, y cannot do anything with the synchronized method of Example, just
block there and wait. After x has done with plusOne, y can have opportunity
to call plusOne.
n*****n
发帖数: 5277
7
synchronized function 是一个原子操作,不是你理解的那样
1 (共1页)
进入Java版参与讨论
相关主题
java 程序中的实时控制请教一个多线程lock机制的问题
jvm是怎么implement monitor的?发现 synchronized 的一个问题
[合集] Java interview question, Thanks.synchronization for counters
synchronized method does lock the object that passed into the method as a parameter?synchronization 锁住了什么?
Apply lock on a class.新手问个multi-threading关于synchronized和volatile的问题
interview question:同一个Lock锁两次,性能比较差
请教:怎么把synchronize的method改成用thread 但thread safe呢?能不能讲讲IB和对冲的java developer的面试,大概会面什么
Talk a little more about How to lock a file问个面试题, 谢谢
相关话题的讨论汇总
话题: time话题: plusone话题: java话题: write