(求助)单立模式的对象,如果保证同一时刻只有一个线程获得了它的引用?

windew 2004-08-11 05:04:24
很长时间不用Java了,使用起来有点别扭。
我设计了一个类,使用了单立模式,现在我想要在getInstance()方法中加上同步锁,用于确保同一时刻只有一个线程获得了这个类唯一的那个对象的引用。如何实现?
public static synchronized Object getInstance();
请问,这种方式能实现我的需求吗?
我觉得好像是不行吧,还有没有其他的解决方案?
十万火急,请大家帮帮忙。
...全文
118 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
windew 2004-08-16
  • 打赏
  • 举报
回复
kongkongye(飘在空中的汽水瓶):感谢你的参与,不过,在线程之间加锁时,是不能使用自定义的信号量的,因为它不是原子性操作。:)
kongkongye 2004-08-11
  • 打赏
  • 举报
回复
既然是单例模型,那么,他对外提供的使用单例的接口就是唯一确定的。
可增加一个boolean 型类变量,初始为false ,在接口中判断并且设定它,当该单例已被使用时,设变量为true。在接口中,首先,判断该变量,若true, return null;若false,return theSimpleObject;
windew 2004-08-11
  • 打赏
  • 举报
回复
我尝试了如下的方式:

public static Object getInstance();

Object object = Object.getInstance();
synchronized (object){

}

这样就可以了吗?我大概测试了一下,好像是可以了
rainight 2004-08-11
  • 打赏
  • 举报
回复
你首先保证能够获得这个类的唯一实例,其次,在线程中对这个实例加锁,这样,就不会有两个以上的线程对这个单例并发访问

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧