【发布时间】:2014-03-06 11:13:25
【问题描述】:
首先我是新来的,所以我希望我在提问时能做对所有事情。
问题:
我有一个类Store,其属性为int size;
在这个类中有两种方法来操作size 属性。
`public synchronized void leave(){
this.size++;
}`
`public synchronized void enter(){
while(this.size==0){ }
this.size--;
}`
如果我用size=2;for example 和 4 个其他对象(4 个线程)初始化 Store 对象
交替尝试leave() 或enter()Store object 我会得到一个无限循环。
我想如果我写同步方法,离开方法也可以被一个线程调用,尽管另一个线程会挂在无限循环中。
我希望我的问题可以理解。 非常感谢您的帮助。
【问题讨论】:
-
锁在对象上,而不是方法上。两个线程可以为不同的对象输入相同的方法。
标签: java multithreading concurrency synchronized