由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Java版 - Java synchronized method一问
相关主题
Apply lock on a class.问一个基础问题
synchronized method does lock the object that passed into the method as a parameter?请教:怎么把synchronize的method改成用thread 但thread safe呢?
CC150 16.6答案是不是有问题? (转载)java ,wait ,notify notifyall
发现 synchronized 的一个问题新手问个multi-threading关于synchronized和volatile的问题
Talk a little more about How to lock a fileJava concurrency的疑惑,难道我理解错了? (转载)
请教一个多线程lock机制的问题一个多线程问题
Re: How to lock a file and detect a thread is over?同一个Lock锁两次,性能比较差
multi-threading guru们 (转载)多线程的一个基础问题
相关话题的讨论汇总
话题: method话题: thread话题: public话题: access
进入Java版参与讨论
1 (共1页)
x****o
发帖数: 29677
1
问个简单问题
CLASS A{
PUBLIC synchronized METHOD 1
PUBLIC synchronized METHOD 2
}
THREAD A
THREAD B
THREAD A ACCESS METHOD 1 SAME TIME THREAD B ACCESS METHOD 2
这里有什么问题
Y**G
发帖数: 1089
2
method 1 and method 2 won't be called on the same instance any time.

【在 x****o 的大作中提到】
: 问个简单问题
: CLASS A{
: PUBLIC synchronized METHOD 1
: PUBLIC synchronized METHOD 2
: }
: THREAD A
: THREAD B
: THREAD A ACCESS METHOD 1 SAME TIME THREAD B ACCESS METHOD 2
: 这里有什么问题

x****o
发帖数: 29677
3

是LOCK,对吧?

【在 Y**G 的大作中提到】
: method 1 and method 2 won't be called on the same instance any time.
Y**G
发帖数: 1089
4
对,就是打饭的时候得一个一个来,不许一拥而上
x****o
发帖数: 29677
5

MD老印非说不是

【在 Y**G 的大作中提到】
: 对,就是打饭的时候得一个一个来,不许一拥而上
p*****2
发帖数: 21240
6
你问的是什么问题呀?
烙印说不是是什么意思?
x****o
发帖数: 29677
7

烙印问我这样是什么,我说有锁了,线程要一个个来
三哥说不会锁。。。

【在 p*****2 的大作中提到】
: 你问的是什么问题呀?
: 烙印说不是是什么意思?

o**1
发帖数: 6383
8
老印说的对。

【在 x****o 的大作中提到】
:
: 烙印问我这样是什么,我说有锁了,线程要一个个来
: 三哥说不会锁。。。

x****o
发帖数: 29677
9

同一个instance下不锁?两个thread都可以access?

【在 o**1 的大作中提到】
: 老印说的对。
p*****2
发帖数: 21240
10

你这个例子没看到有instance呀

【在 x****o 的大作中提到】
:
: 同一个instance下不锁?两个thread都可以access?

相关主题
请教一个多线程lock机制的问题问一个基础问题
Re: How to lock a file and detect a thread is over?请教:怎么把synchronize的method改成用thread 但thread safe呢?
multi-threading guru们 (转载)java ,wait ,notify notifyall
进入Java版参与讨论
x****o
发帖数: 29677
11

那个method都不是static的,何况要不是一个instance还锁啥

【在 p*****2 的大作中提到】
:
: 你这个例子没看到有instance呀

p*****2
发帖数: 21240
12

所以你跟烙印没说到一起呀。

【在 x****o 的大作中提到】
:
: 那个method都不是static的,何况要不是一个instance还锁啥

c*********e
发帖数: 16335
13
烙印说的对啊,如果是一个instance,会锁住。但是,如果2个thread是不同instance,
就不会锁住啊。
一般来说,可以在class A里面设置一个static int temp = 0;在method 1里面,如果
temp == 0, do something, then temp =1;在method 2里面,如果temp == 1,do
something, then temp = 0;见过有人用這種方法。

【在 x****o 的大作中提到】
: 问个简单问题
: CLASS A{
: PUBLIC synchronized METHOD 1
: PUBLIC synchronized METHOD 2
: }
: THREAD A
: THREAD B
: THREAD A ACCESS METHOD 1 SAME TIME THREAD B ACCESS METHOD 2
: 这里有什么问题

c*********e
发帖数: 16335
14
你是说
CLASS A{
PUBLIC static synchronized METHOD 1
PUBLIC static synchronized METHOD 2
} ?
这倒可以试试。

【在 x****o 的大作中提到】
:
: 那个method都不是static的,何况要不是一个instance还锁啥

z*******3
发帖数: 13709
15
阿三显然说错了,你的例子可行是因为对于int的赋值操作是原子操作
所以不会受到多线程的干扰,如果是一个对象,搞不好就挂了
还有就是,你的例子的控制锁在对象身上,而不是静态变量身上
所以do something并不会被多线程所打扰
你们居然这样用多线程,很危险啊
使用原子操作需要对jvm的机制了解才可以
否则老老实实用synchrnoized
如果这个int计算稍微复杂点,加加减减,再作一个pow
你这个估计就不精准了,异常可能倒是不太会抛,但是如果有除以0的话
那就有可能有异常出来

【在 c*********e 的大作中提到】
: 烙印说的对啊,如果是一个instance,会锁住。但是,如果2个thread是不同instance,
: 就不会锁住啊。
: 一般来说,可以在class A里面设置一个static int temp = 0;在method 1里面,如果
: temp == 0, do something, then temp =1;在method 2里面,如果temp == 1,do
: something, then temp = 0;见过有人用這種方法。

x****o
发帖数: 29677
16

你这同步锁改成逻辑了?

【在 c*********e 的大作中提到】
: 烙印说的对啊,如果是一个instance,会锁住。但是,如果2个thread是不同instance,
: 就不会锁住啊。
: 一般来说,可以在class A里面设置一个static int temp = 0;在method 1里面,如果
: temp == 0, do something, then temp =1;在method 2里面,如果temp == 1,do
: something, then temp = 0;见过有人用這種方法。

s*****n
发帖数: 5488
17
烙印说的队。
每个对象都有一个lock field. 相对于windows里面的critical section.
sync方法就是lock(this).
你这里两个对象是两个 CS,自然不会同步。

【在 x****o 的大作中提到】
:
: 你这同步锁改成逻辑了?

b***i
发帖数: 3043
18
楼主的两个thread里面访问的是同一个instance

【在 s*****n 的大作中提到】
: 烙印说的队。
: 每个对象都有一个lock field. 相对于windows里面的critical section.
: sync方法就是lock(this).
: 你这里两个对象是两个 CS,自然不会同步。

r******r
发帖数: 700
19
concurrent access 只是相对意义上的并行,因为多线程对同一个对象的操作,总是
要通过加锁实现,比如 synchronized, 或 lock()。
所以 synchrnozied method 也是为了实现 concurrent 的目标,这样理解对么?

【在 Y**G 的大作中提到】
: method 1 and method 2 won't be called on the same instance any time.
p*****2
发帖数: 21240
20

不早就跟你说了这个说法不对吗?

【在 r******r 的大作中提到】
: concurrent access 只是相对意义上的并行,因为多线程对同一个对象的操作,总是
: 要通过加锁实现,比如 synchronized, 或 lock()。
: 所以 synchrnozied method 也是为了实现 concurrent 的目标,这样理解对么?

相关主题
新手问个multi-threading关于synchronized和volatile的问题同一个Lock锁两次,性能比较差
Java concurrency的疑惑,难道我理解错了? (转载)多线程的一个基础问题
一个多线程问题size() method 为什么需要多线程保护?
进入Java版参与讨论
r******r
发帖数: 700
21
因为我还怀疑嘛 。。。
那你说说,怎样才能算 concurrent access?

【在 p*****2 的大作中提到】
:
: 不早就跟你说了这个说法不对吗?

p*****2
发帖数: 21240
22

concurrency 就是多任务。同一时间能执行的任务越多并发性越高。

【在 r******r 的大作中提到】
: 因为我还怀疑嘛 。。。
: 那你说说,怎样才能算 concurrent access?

x****o
发帖数: 29677
23

我再多问一句吧,多个对象冲突实例是什么?意义是什么?

【在 s*****n 的大作中提到】
: 烙印说的队。
: 每个对象都有一个lock field. 相对于windows里面的critical section.
: sync方法就是lock(this).
: 你这里两个对象是两个 CS,自然不会同步。

1 (共1页)
进入Java版参与讨论
相关主题
多线程的一个基础问题Talk a little more about How to lock a file
size() method 为什么需要多线程保护?请教一个多线程lock机制的问题
多线程真头疼,但也挺有趣Re: How to lock a file and detect a thread is over?
java多线程问题请教multi-threading guru们 (转载)
Apply lock on a class.问一个基础问题
synchronized method does lock the object that passed into the method as a parameter?请教:怎么把synchronize的method改成用thread 但thread safe呢?
CC150 16.6答案是不是有问题? (转载)java ,wait ,notify notifyall
发现 synchronized 的一个问题新手问个multi-threading关于synchronized和volatile的问题
相关话题的讨论汇总
话题: method话题: thread话题: public话题: access