Koz*_*uki 3 java concurrency singleton production server
我有一些java类,其中成员变量都Autowired使用Spring bean.我认为这保证了单身模式.但我想知道代码是如何在生产服务器上运行的?单线程是否保证每个线程还是全球保证?我应该如何考虑开发中的并发性.
编辑
示例:一个类接收请求并响应它收到的请求数.在这种情况下,我们需要保证柜台的全局单身,对吗?无论我们使用多少台服务器,都应该只有一台计数器.隐含的是这种保证吗?
经典单身人士和春天单身人士的范围
Singleton通常表示在JVM上运行的整个应用程序的单例.
这就是Java经典实现的情况,您可以自己实现它(单例双重检查习语,枚举习惯用法,按需初始化持有者习惯用法,等等).
在这些情况下,单例确实是在单例类的类加载上创建的,因此JVM只需一次.
春季单身人士的工作方式略有不同.
他们确实依赖于容器.因此,如果在同一JVM中创建多个容器,则可以创建多个单例.现在它真的是一个极端情况,除了这些单独的豆之间是隔离的.所以不要专注于它.
关于并发
单身者没有任何并发问题,而这些是不可变的.
当然,您可以在单例中定义依赖项和属性.但这些在实例化后不应该改变.
实际上,如果单例方法允许改变单例状态,那么你必然会有不同线程的竞争条件来操纵它.
所以作为一个提示,让你的单身人士不变或尽可能不变.
如果这些不能完全不可变,则必须通过同步需要的方法/字段来确保处理竞争条件.
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |