本帖最后由 1453149997 于 2014-4-3 17:03 编辑
我们知道,对于多线程,如果操作共享资源,要把资源和操作资源的方法都封装在一个单独的类里,对于操作资源的方法我们需要它们同步;
如 一个资源类Fridge(冰箱)
public class Fridge{
private List<Food> foodList = new LinkedList<Food>();//Food代表一个描述食物的类
//1.往冰箱里放食物
public synchronized void setFood(Food food){
foodList.add(food);
}
//2.从冰箱里取食物
public synchronized Food getFood(){
return foodList.pollFirst();
}
}
问题:上面的方法setFood和setFood方法同步,setFood和getFood方法同步,getFood和getFood方法同步,但是我们知道,多个线程并发获取食物并不
会对数据的安全性造成影响,所以我不想让getFood和getFood同步,即多个线程取食物时不同步,该如何做?
|