在java中并发访问Singleton

Win*_*Win 4 java singleton design-patterns

我有一个sinlgeton对象,它持有一个方法,巫婆不同步.单个用户可以一次访问单例 - 如果多个客户端访问该对象会发生什么?是否会以先来先服务的方式提供对象引用...也就是说,一个客户端是否必须等待第一个完成对象,或者它将在内存中被赋予相同的对象引用?

我对单例中未同步的方法感到奇怪.如果2个客户端使用不同的参数调用Singleton.method(param) - 它们不会为彼此创建问题吗?

Tom*_*icz 7

如果您的方法不使用任何共享状态(例如,单例字段),则这是完全安全的.方法参数在线程堆栈上传递 - 这是本地的并且是堆栈专用的.

想想两个运行相同代码但在内存中不同区域运行的处理器.

  • 您的单例对象(其实例字段)位于堆上.单例对象方法的代码位于PermGen内存上(每个加载的类一次,而不是对象).方法参数在堆栈上传递,每个线程都是本地的.三个不同的内存位置,我建议你阅读更多关于它们的内容. (2认同)