关于单例模式的这两段话是什么意思?不解 单例类加载器序列化 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、其实这里涉及到一个问题是 同一个类被两个不同的ClassLoader加载的话,对于java虚拟机来说实际上认为是两个类。2、既然设计成单例的,那就不应该实现Serializable接口。其实说的这两个问题都是人为故意破坏程序的设计,程序不管怎么设计,都总是有问题的。不是有人说,从helloword程序中都能找到bug吗?没有十全十美的设计,比如说设计一个汽车,驾驶员硬是要往水里开,那能怪汽车设计人员说为什么不设计成禁止往水里开? 上述代码是怎么阻止用不同的classloader加载和发序列化的呢? 1、单例模式是个设计概念,不是一个实现概念,很多时候是没有必要注意一些特殊情况的,任何事物都有自己的作用域范围,你只要保证你的设计在你给定的作用域范围内正确就行。2、关于Classloader对于单例的冲突,大多数时候,多Classloader并不会造成所谓的单例模式冲突,因为觉得大多数的时候Classloader不会自己去实现,而默认实现都是有父子层级关系的(有关Classloader的类加载机制可以自己去查),因此加载的类几乎都在同一个域中,所以绝大多数情况不存在同一个类装载不同域的特殊情况。3、关于序列化是否会造成单例模式冲突,那么还是第一个观点的问解释,反序列化生成对象是无法阻止的,但是对应的你也可以用其它方式来完成单例模式的设计来规避这种风险,这只是具体实现的问题,问题在于你如何处理你所给定范围中设计的正确执行。 UNSAFE.allocateInstance(arg0);创建对象的方式有很多种,普通的单例只是防止通过new的方式产生第二实例。 Unsafe只能在hotspot上用,不靠谱,早已舍弃 Unsafe只能在hotspot上用,不靠谱,早已舍弃Unsafe不是Java规范包,因此不再考虑范围内,而且在1.7以后似乎已经弃用,非sun版本jdk也没这个玩意。 Unsafe只能在hotspot上用,不靠谱,早已舍弃Unsafe不是Java规范包,因此不再考虑范围内,而且在1.7以后似乎已经弃用,非sun版本jdk也没这个玩意。java8可用且功能更强大,但还是不建议用 求高手帮帮忙!!!!! java变量初始化问题 J2SE的安装 新手.大家帮帮忙哈!为感! 没分了小弟 请热心人帮忙看下 设置了setautocommit为false,最后直接关闭连接,会提交不 万元高薪诚聘 有人知道 Java Code Viewer 5.0 的注册码吗? 谢谢 谢谢 有关WINDOW 关于java“求一个月有几天”的demo,但实现不了。求解释 一个关于JAVA 直接调用.js 文件的问题。 java多个线程是共享同一个对象的方法??(多线程的局部变量)
同一个类被两个不同的ClassLoader加载的话,对于java虚拟机来说实际上认为是两个类。
2、既然设计成单例的,那就不应该实现Serializable接口。其实说的这两个问题都是人为故意破坏程序的设计,程序不管怎么设计,都总是有问题的。
不是有人说,从helloword程序中都能找到bug吗?没有十全十美的设计,比如说设计一个汽车,驾驶员硬是要往水里开,那能怪汽车设计人员说为什么不设计成禁止往水里开?
2、关于Classloader对于单例的冲突,大多数时候,多Classloader并不会造成所谓的单例模式冲突,因为觉得大多数的时候Classloader不会自己去实现,而默认实现都是有父子层级关系的(有关Classloader的类加载机制可以自己去查),因此加载的类几乎都在同一个域中,所以绝大多数情况不存在同一个类装载不同域的特殊情况。
3、关于序列化是否会造成单例模式冲突,那么还是第一个观点的问解释,反序列化生成对象是无法阻止的,但是对应的你也可以用其它方式来完成单例模式的设计来规避这种风险,这只是具体实现的问题,问题在于你如何处理你所给定范围中设计的正确执行。
创建对象的方式有很多种,普通的单例只是防止通过new的方式产生第二实例。
Unsafe只能在hotspot上用,不靠谱,早已舍弃
Unsafe只能在hotspot上用,不靠谱,早已舍弃
Unsafe不是Java规范包,因此不再考虑范围内,而且在1.7以后似乎已经弃用,非sun版本jdk也没这个玩意。
Unsafe只能在hotspot上用,不靠谱,早已舍弃
Unsafe不是Java规范包,因此不再考虑范围内,而且在1.7以后似乎已经弃用,非sun版本jdk也没这个玩意。
java8可用且功能更强大,但还是不建议用