首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

问个Vector多线程有关问题

2012-12-21 
问个Vector多线程问题public void transfer (VectorDouble accounts,int from , int to,int amount ){ac

问个Vector多线程问题
public void transfer (Vector<Double> accounts,int from , int to,int amount )
{
accounts.set(from, accounts.get(from)-amount);
accounts.set(to, accounts.get(to)-amount);
}
vector类的get 和set 方法是同步的,为什么一个线程完全可能在家transfer 方法中被告剥夺运行权,于是另一个线程可能在相同的存储位置存入不同的值
上面的get方法不都在set 方法内吗,怎么会出线覆盖的情况
[最优解释]
虽然,get 和 set 函数自身是同步的,但并不代表若干次调用之间是同步的啊。。。
[其他解释]
两次调用同步方法的过程是获取锁-释放锁。。。。获取锁-释放锁 的过程

因为中间有释放锁,所以,两个同步方法在一起就不是原子的了
[其他解释]
mark先,继续理解一楼的解释。
[其他解释]

不懂啊

热点排行