我有一个数组,这2个值,我想保持单元格独立。例如,当一个线程获得第一个位置的锁定时,这个线程不会阻塞整个结构。锁定数组的单元格
public DataStructure(int r, int i) {
this.r = r;
this.i = i;
values = new ArrayList<Integer>;
values.add(i);
values.add(r);
[...]
}
public void methodA() {
lock.lock();
[...]
values.get(0);
lock.unlock();
}
public void methodB() {
lock.lock();
[...]
values.get(1);
lock.unlock();
}
与此代码当一个线程获取有关methodA
这是不可能到一个不同的线程来获得methodB
锁的锁。
我该怎么办呢?
你的意思是说你的方法应该是'synchronized'吗? – 2014-10-17 08:50:14
@ShishirKumar不,我的意思是说,如果一个线程访问数组的第一个位置,另一个线程可以访问其他位置,没有同步,但具有并行性 – 2014-10-17 08:51:55
哦,我现在明白了。 – 2014-10-17 08:53:00