67,515
社区成员
发帖
与我相关
我的任务
分享
class DV {
}
class MeetingRoom{
public static final DV SharedDV = new DV();
public synchronized void meeting(){
// ......
}
}
......
MettingRoom room1 = new MeetingRoom(), room2 = new MeetingRoom(), room3 = new MeetingRoom();
// 将 room1、room2、room3 分别交给三个线程,执行 MeetingRoom.meeting() 方法
在上面的代码中,虽然在 MeetingRoom.meeting 方法中加上了 synchronized,但却并不能实现对DV这个资源的互斥访问。要想实现对 DV 资源的互斥访问,synchronized 应该加在资源上:
public void meeting(){
synchronized(MeetingRoom.SharedDV){
......
}
}