“单例一个最常见的设计模式。
既简单,又复杂。“
------------------------------
周末几个同事聚在一起聊天,回顾起当初面试时经常问起的关于 java 的单例模式。
有同事提出单例类的对象在 jvm 中只存在一个,这个观点是否正确?
其实这种观点看似正确,给人很强的误导性,但并不准确。
因为 java 的对象实例化与 classloader 密切相关。
每个 classloader 都有自身的命名空间,在同一命名空间中是不允许同名类的。
就我们谈及的单例而言,在同一个 classloader 的命名空间中有且仅有一个实例。
所以,在一个 jvm 运行时,是有可能会包含实现单例模式类的多个实例的,它们只是处在不同的 classloader 命名空间中。
平时工作主要参与应用和业务开发,都很少会去接触 classloader 之类的。
不了解其中的原理自然对单例的实现会产生一些误解。
不过从思维的角度来说,即使不了解 jvm 和 classloader 原理层面的东西,也是可以判断出这个问题的答案。
平时工作中的业务应用部署基本都是基于 tomcat 容器的,大家都了解 tomcat 是可以同时部署多个应用的。
那么假设不同应用中如果包含了完全同名的类时,tomcat 在应用层面是有效隔离的。
反过来也佐证了,同名类的多个实例其实可以同时存在于一个 jvm 中。
所以这里谈的单例有个前提,是针对应用而言,同一个类的的实例对应用而言是唯一的,大部分的业务场景需求都是如此。
而如果参照对象是 jvm,那么对应用而言的单例其实对 jvm 而言是多例的。
分享到:
相关推荐
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
借助现有奖学金的四项研究,本文介绍了一种全新的模型,旨在描述在后真相时代误导性信息在混合媒体系统中传播的过程。 该模型的应用导致了四种不同的传播类型。 这些类型用于描述来自2016年美国总统大选的误导性...
间质性肺疾病(ILD)是一组异质性慢性,凶猛的进行性肺疾病。 上述疾病的病因并不总是可识别的。 这些令人沮丧的疾病的... 经支气管冷冻检查可能是诊断这些疾病的圣杯,或者是这个具有挑战性的领域的误导性诊断工具。
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
现代大规模关键性系统中的Java性能调优,是一项富有挑战的任务。你需要关注各种问题,包括算法结构、内存分配模式以及磁盘和文件I/O的使用方式。性能调优最困难的是找出问题,即便是经验丰富的人也会被他们的直觉所...
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
是误导,以自我为中心,自我称赞和自我冲突的。 他们将著名的早期被子植物Archaefructus排除在示例被子植物的名单之外,其中只包含他们发表的化石植物,给人的印象是它们仅对被子植物的起源和早期历史具有权威性。 ...
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
ChatGPT技术的使用教程、使用方法、使用技巧、使用注意事项、使用中常见问题
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...
·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 ...