Redian新闻
>
CC150 16.6答案是不是有问题? (转载)
avatar
CC150 16.6答案是不是有问题? (转载)# Java - 爪哇娇娃
p*2
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: peking2 (kerberos), 信区: JobHunting
标 题: CC150 16.6答案是不是有问题?
发信站: BBS 未名空间站 (Sun Dec 16 20:23:36 2012, 美东)
A synchronized method applies a lock on that method in that specific
instance of the object.
The lock is applied at the "method+object level".
这是不是错的?
avatar
g*e
2
哪错了?

【在 p*****2 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: peking2 (kerberos), 信区: JobHunting
: 标 题: CC150 16.6答案是不是有问题?
: 发信站: BBS 未名空间站 (Sun Dec 16 20:23:36 2012, 美东)
: A synchronized method applies a lock on that method in that specific
: instance of the object.
: The lock is applied at the "method+object level".
: 这是不是错的?

avatar
p*2
3

lock应该是object level吧?

【在 g**e 的大作中提到】
: 哪错了?
avatar
g*g
4
You are correct.

【在 p*****2 的大作中提到】
:
: lock应该是object level吧?

avatar
z*3
5
我记得是没有方法锁的

【在 p*****2 的大作中提到】
:
: lock应该是object level吧?

avatar
T*U
6
没错,你还可以访问object的其他method

【在 p*****2 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: peking2 (kerberos), 信区: JobHunting
: 标 题: CC150 16.6答案是不是有问题?
: 发信站: BBS 未名空间站 (Sun Dec 16 20:23:36 2012, 美东)
: A synchronized method applies a lock on that method in that specific
: instance of the object.
: The lock is applied at the "method+object level".
: 这是不是错的?

avatar
p*2
7

你确信吗?你的意思就是CC150的意思,但是我今天看了thinking in java,上边说是
不能访问其他method的。而且我在网上查了一些资料,还有java document,都是
thinking in java的意思。

【在 T****U 的大作中提到】
: 没错,你还可以访问object的其他method
avatar
z*3
8
做个试验吧
怀疑1。5之后有改动

【在 p*****2 的大作中提到】
:
: 你确信吗?你的意思就是CC150的意思,但是我今天看了thinking in java,上边说是
: 不能访问其他method的。而且我在网上查了一些资料,还有java document,都是
: thinking in java的意思。

avatar
T*U
9
反正scjp那本书这么说的,我没试验过。

【在 p*****2 的大作中提到】
:
: 你确信吗?你的意思就是CC150的意思,但是我今天看了thinking in java,上边说是
: 不能访问其他method的。而且我在网上查了一些资料,还有java document,都是
: thinking in java的意思。

avatar
g*g
10
锁是在对象上没有错,但要其他方法也synchronized,才会阻止对那些方法的访问,这
个应该很容易理解。

【在 p*****2 的大作中提到】
:
: 你确信吗?你的意思就是CC150的意思,但是我今天看了thinking in java,上边说是
: 不能访问其他method的。而且我在网上查了一些资料,还有java document,都是
: thinking in java的意思。

avatar
p*2
11

做了试验了,不能同时访问。Thinking in java是对的。

【在 z*******3 的大作中提到】
: 做个试验吧
: 怀疑1。5之后有改动

avatar
p*2
12

CC150的意思是只要不是同一个方法,就不会被block。即使两个都是synchronized,访
问一个,另一个还是可以由其他thread去访问。她说只有static的方法,才会block。

【在 g*****g 的大作中提到】
: 锁是在对象上没有错,但要其他方法也synchronized,才会阻止对那些方法的访问,这
: 个应该很容易理解。

avatar
N*m
13
我靠,这不会是真的吧?

【在 p*****2 的大作中提到】
:
: CC150的意思是只要不是同一个方法,就不会被block。即使两个都是synchronized,访
: 问一个,另一个还是可以由其他thread去访问。她说只有static的方法,才会block。

avatar
T*U
14
1.static和instance method互相不锁
2.调用同一个object的synchronized instance methods是互锁的
你是怎么试验的?

【在 p*****2 的大作中提到】
:
: CC150的意思是只要不是同一个方法,就不会被block。即使两个都是synchronized,访
: 问一个,另一个还是可以由其他thread去访问。她说只有static的方法,才会block。

avatar
p*2
15

你说的不就是thinking in java说的吗?

【在 T****U 的大作中提到】
: 1.static和instance method互相不锁
: 2.调用同一个object的synchronized instance methods是互锁的
: 你是怎么试验的?

avatar
T*U
16
不是也跟你那个问题的答案一样吗?你觉得区别在哪里?
如果一个object的synchronized method正在被线程访问,另一个线程不能访问这个obj
ect的所有synchronized methods, 但是可以访问其他普通method.甚至于可以通过普通
method访问正在被synchronized method访问的数据。也就是这个机制并不能一劳永逸
地保护
数据,还是要小心设计才能避免同时重复操作数据。

【在 p*****2 的大作中提到】
:
: 你说的不就是thinking in java说的吗?

avatar
p*2
17

obj
你说的lock是object level的。她说的lock是method+object level的。就是说两个
synchronized method如果不是static,互相不block。

【在 T****U 的大作中提到】
: 不是也跟你那个问题的答案一样吗?你觉得区别在哪里?
: 如果一个object的synchronized method正在被线程访问,另一个线程不能访问这个obj
: ect的所有synchronized methods, 但是可以访问其他普通method.甚至于可以通过普通
: method访问正在被synchronized method访问的数据。也就是这个机制并不能一劳永逸
: 地保护
: 数据,还是要小心设计才能避免同时重复操作数据。

avatar
g*g
18
CC150答案有错很正常。

【在 p*****2 的大作中提到】
:
: obj
: 你说的lock是object level的。她说的lock是method+object level的。就是说两个
: synchronized method如果不是static,互相不block。

avatar
p*2
19

主要是我这Java菜鸟相信了这个理论一年了。真冤呀。

【在 g*****g 的大作中提到】
: CC150答案有错很正常。
avatar
g*e
20
这显然就是瞎说了
static method锁的是.class

【在 p*****2 的大作中提到】
:
: 主要是我这Java菜鸟相信了这个理论一年了。真冤呀。

avatar
F*X
21
刚好学到Multithreading,也来说2口:
1)a synchronized instance method of that object is blocked from another
thread.
2) a synchronized static method of that class is blocked from another thread
.
avatar
F*X
22
我怎么感觉没有错了?我看其他的书也是这样说的 a lock 是 on the object 呀!

【在 p*****2 的大作中提到】
:
: 主要是我这Java菜鸟相信了这个理论一年了。真冤呀。

avatar
p*2
23

她说的是on object+method

【在 F*******X 的大作中提到】
: 我怎么感觉没有错了?我看其他的书也是这样说的 a lock 是 on the object 呀!
avatar
F*X
24
没有错呀, the synchronized instance method 如果 invoked, 那么the specified
object obtains the lock,所以 “on object+method”是没有错呀!看了2本书都这
样描述的。就是因为这样,所以很多书都建议用 synchronized statement 来代替
synchronized method 来提高efficiency。刚好学到 Multithreading, 所以有点深刻。

【在 p*****2 的大作中提到】
:
: 她说的是on object+method

avatar
p*2
25

刻。
一个说的是基于object
一个是说的基于object+method的,怎么会一样?

【在 F*******X 的大作中提到】
: 没有错呀, the synchronized instance method 如果 invoked, 那么the specified
: object obtains the lock,所以 “on object+method”是没有错呀!看了2本书都这
: 样描述的。就是因为这样,所以很多书都建议用 synchronized statement 来代替
: synchronized method 来提高efficiency。刚好学到 Multithreading, 所以有点深刻。

avatar
F*X
26
是不是大家在理解上有分歧了?我引用一下Daniel Liang在书中说的,我怎么理解的和
Thinking in Java说的是一样的?
"A synchronized method acquires a lock before it executes. In the case of an
instance
method, the lock is on the object for which the method was invoked. In the
case of a static
method, the lock is on the class. If one thread invokes a synchronized
instance method (respectively,
static method) on an object, the lock of that object (respectively, class)
is acquired
first, then the method is executed, and finally the lock is released.
Another thread
invoking the same method of that object (respectively, class) is blocked
until the lock is
released."
大家继续探讨一下吧!

【在 p*****2 的大作中提到】
:
: 刻。
: 一个说的是基于object
: 一个是说的基于object+method的,怎么会一样?

avatar
p*2
27

an
你说的这个还是基于object的,不是基于method+object的。

【在 F*******X 的大作中提到】
: 是不是大家在理解上有分歧了?我引用一下Daniel Liang在书中说的,我怎么理解的和
: Thinking in Java说的是一样的?
: "A synchronized method acquires a lock before it executes. In the case of an
: instance
: method, the lock is on the object for which the method was invoked. In the
: case of a static
: method, the lock is on the class. If one thread invokes a synchronized
: instance method (respectively,
: static method) on an object, the lock of that object (respectively, class)
: is acquired

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。