jjzjj

Singleton

全部标签

java - 对单例模式使用双重检查锁定习惯用法是否最佳?

对单例模式使用双重检查锁定习惯用法是否更好?还是同步方法?即:privatestaticvolatileProcessManagersingleton=null;publicstaticProcessManagergetInstance()throwsException{if(singleton==null){synchronized(MyClass.class){if(singleton==null){singleton=newProcessManager();}}}returnsingleton;或privatestaticprocessManagersingleton=null;

Java Singleton.getInstance() 返回空值?

我尝试使用这个单例,但getInstance显然可以返回null:classSingleton{publicstaticfinalStringK_LEVEL="level";staticSingletoninstance=newSingleton();privateintlevel;staticSingletongetInstance(){returninstance;}intgetLevel(){returnlevel;}voidincrementLevel(){System.out.println("LEVELINCREASEDTO"+++level);}voidaddToLeve

java - 真实世界 Java 应用程序中的单例模式和损坏的双重检查锁定

我正在阅读文章Double-checkedlockingandtheSingletonpattern,关于如何破坏双重检查锁定,以及StackOverflow上的一些相关问题。我已经多次使用这个模式/习语,没有任何问题。由于我一直在使用Java5,我的第一个想法是这已在Java5内存模型中得到纠正。但是文章说:ThisarticlereferstotheJavaMemoryModelbeforeitwasrevisedforJava5.0;statementsaboutmemoryorderingmaynolongerbecorrect.However,thedouble-checke

java - 现实生活中的通用类示例

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我在Java面试中遇到了下一个问题:您能说出一些现实生活中的通用类示例吗?不是来自真实的编程生活,而是共同点。例如。您正在向对编程一无所知的人解释泛型。最简单的设计模式-单例也是如此。关于第一个问题(关于泛型),我有任何想法,我尝试命名不同的手工工具(如fretsaw),它们只适用于一种类型的Material,但它不是真正的泛型。请避免收集类建议,它太幼稚

java - 避免多个 Singleton 实例?

这个问题在这里已经有了答案:WhatisanefficientwaytoimplementasingletonpatterninJava?[closed](29个答案)关闭8年前。我相信,当一个单例对象被序列化,然后被连续多次反序列化时,会创建多个单例实例。如何避免这种情况?

java - 生成单例

这听起来像是一个奇怪的想法,我还没有仔细考虑过。例如,假设您有一个应用程序最终需要一定数量的单例来执行某些I/O。您可以编写一个单例,基本上可以根据需要多次重现代码。但是,作为程序员,我们应该想出有创意的解决方案,避免任何形式的冗余或重复。什么是制作多个东西的解决方案,每个东西都可以充当单例。P.S:这是针对无法使用Spring等框架的项目。 最佳答案 你可以像这样引入一个抽象:publicabstractclassSingleton{privateTobject;publicsynchronizedTget(){if(object

java - 使用 AtomicReference 的单例

使用AtomicReference的惰性初始化单例的实现是否正确?如果不是-可能的问题是什么?importjava.io.ObjectStreamException;importjava.io.Serializable;importjava.util.concurrent.atomic.AtomicReference;publicclassSingletonimplementsSerializable{privatestaticfinalSingleton_instance=newSingleton();privatestaticAtomicReferenceinstance=newA

java - Servlet : Singleton, 单线程或多实例多线程

这个问题之前有人问过,也讨论过,但我想再问一下。Servlet是否是单例?根据我的说法,它们仅由容器初始化,但它们仍然不是单例??为什么??Servlets是单线程还是多线程(忘记javax.servlet.SingleThreadModel类)即当对单个servlet有多个请求时会发生什么?如果它们同时执行,那就意味着它是多线程的??如果它是多线程的,那么每个线程都会有一个servlet实例,这与第一点矛盾!!我认为,每当有新请求时,容器都会为传入的请求创建一个新线程,比如Req1,因为它会调用或分派(dispatch)控件到servlet的服务方法。现在这个执行是同时发生的……我猜

java - javax.ejb.Singleton在集群环境下单例如何?

我需要为集群环境中的所有用户和所有节点维护一个在应用程序中唯一的简单计数器。我考虑过像这样使用单例sessionbean注释javax.ejb.Singleton:packagefoo;importjavax.ejb.Singleton;@SingletonpublicclassBean{privateintcounter;[...]}这看起来很简单,但如果它在集群环境中按预期工作,我找不到答案。集群的每个节点是否都有自己的实例?当然,我可以将bean持久保存在数据库中,但它实际上只是一个计数器,这样做就太过分了。此外,我希望计数器在应用程序崩溃或重新启动时重置,因此坚持使用它会产生比

java - 在 Spring MVC Controller 层中,@Scope ("prototype") 与 @Scope ("singleton")

我有以下使用SpringMVC的Controller代码:@Controller@Scope("prototype")@RequestMapping("/messages")publicclassMessageController{@RequestMapping(value="/index",method=RequestMethod.GET)@ResponseStatus(HttpStatus.OK)@ResponseBodypublicStringdisplayAllMessages(ModelMapmodel){System.out.println(this.hashCode())