繁体   English   中英

在java中并发访问Singleton

[英]Concurrent access of Singleton in java

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

我对单例中未同步的方法感到奇怪。 如果2个客户调用Singleton.method(param),使用不同的参数 - 它们不会互相产生问题吗?

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

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

Singleton意味着应该只有一个类的实例。 嗯,如果没有正确实施单身人士,这可能不是真的。 拥有单例的最安全的方法是将其声明为enum

如果有一个未同步的方法,则意味着多个线程可以同时执行该方法的主体。 如果单身是不可变的那么就不用担心了。 否则你应该注意可能的不一致。 一个线程可以更改状态,而另一个线程执行相同操作,从而导致难以预测的结果,非常难以调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM