草庐IT

Singleton_Full

全部标签

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())

java - 为什么在生产者中使用 @Singleton 而不是 @ApplicationScoped?

LoggerProducer.java是一个用于生成要注入(inject)CDIbean中的记录器的类:@InjectLoggerLOG;完整代码:importjavax.ejb.Singleton;/***@authorrveldpau*/@SingletonpublicclassLoggerProducer{privateMaploggers=newHashMap();@ProducespublicLoggergetProducer(InjectionPointip){Stringkey=getKeyFromIp(ip);if(!loggers.containsKey(key)){

java - 我们什么时候应该在 Java 中使用 Singleton 类?

按照我的想法,当我们在整个应用程序中共享相同的对象状态时,我们应该创建一个单例类。在那种情况下,我们希望用户限制每次都创建一个新实例,这样他们就无法维护多个状态。同意。但是可以通过将实例变量声明为静态来实现相同的行为。在我看来,无论是cacheobjectcontainer、logger还是Classloader类,它都将起到相同的作用。请帮助我理解上面的概念,其中静态实例变量不能解决目的并且需要将类声明为Singleton?编辑部分好吧,让我更清楚一点。单例类的目的是跨jvm只保留单例类的一个实例。同意。但我想想想为什么我们只想保留一个实例。可能有两个原因:1)对象的创建成本可能很高

java - 为什么 private static field = new Singleton 在 Java 中不懒惰?

我看了很多关于Singleton的文章,其中大部分作者都说Java中Singleton的这种变体:publicclassSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){returninstance;}}是不懒惰(然后是EAGER)。但我不明白为什么,Singleton()构造函数只会在Singleton类初始化时被调用。我知道几个可以触发类初始化的原因:将new与构造函数一起使用(但在这种情况下,构造函数是私有(p

java - @Singleton 或 getSingletons() 在 Jersey 实现 Singleton Resources

我有一个资源要作为RestfulWS公开。如果我必须将其设为Singleton,首选和建议的方式是什么:1。使用@Singleton注释资源类或者2。在我的应用程序类实现中实现getSingletons()方法并在那里实例化资源publicclassRestApplicationextendsApplication{privateSetsingletons=newHashSet();publicRestApplication(){singletons.add(newPlayerResource());}@OverridepublicSet>getClasses(){returnnull

java - 非常慢的 Java full GC 挂钟

有时,在测试机器(Windows)上,Java完整GC需要超过20秒。GC日志显示real时间非常高,user也很高,但没有那么高(大约3秒)。在一种情况下,它是:21.2209796secs[Times:user=3.76sys=0.45,real=21.22secs]可能是什么原因?我有一个怀疑,但现在不想说。找出根本原因的最简单方法是什么?如果您不了解Windows但了解Linux,那也是一种选择:可以在Linux上重新运行测试。流程是这样开始的:"%JAVA_HOME%\bin\java.exe"-verbose:gc-XX:+PrintGCDetails-XX:+PrintG

java - G1 垃圾收集器 : Why survivor space is always full?

这是jmap-heap命令的输出:SurvivorSpace:regions=52capacity=54525952(52.0MB)used=54525952(52.0MB)free=0(0.0MB)100.0%used我已经执行了很多次,我发现capacity的值总是等于used。我的问题是为什么幸存者空间总是满的(而且这么小)?我指定了-Xmx2200m-Xms2200m-Xmn1100m。(我预计survivorspace应该是220M,也就是说survivorregion应该有更多的空间)--更新--jheap的完整输出:Garbage-First(G1)GCwith2thre

Java : Singleton class instances in a Web based Application

我在Web应用程序中有这个Singleton类。publicclassMyDAO{privatestaticMyDAOinstance;privateMyDAO(){}publicstaticMyDAOgetInstance(){if(instance==null){instance=newMyDAO();}returninstance;}我会这样访问publicvoidget_Data(){MyDAOdao=MyDAO.getInstance();}如果有3个用户访问应用程序,将创建多少个MyDAO类对象??每个用户会有一个MyDAO实例吗?? 最佳答案