首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么不鼓励在Java EE容器中生成线程?

在Java EE容器中生成线程可能会导致资源管理和并发问题。Java EE容器提供了内置的线程管理机制,如EJB和Web服务器的工作线程池,这些线程池可以有效地管理线程资源,并确保线程之间的资源共享和并发控制。

如果在Java EE容器中生成自定义线程,可能会导致以下问题:

  1. 资源管理问题:自定义线程可能会消耗大量的系统资源,如内存和CPU,从而影响容器的性能。容器无法对自定义线程进行有效的管理,导致资源浪费或资源争抢问题。
  2. 并发问题:自定义线程可能会与容器内的其他线程产生并发冲突,导致程序行为不可预测。容器提供了内置的并发控制机制,如锁和同步机制,这些机制可以确保线程之间的安全和一致性。
  3. 生命周期管理问题:自定义线程的生命周期可能与容器的生命周期不一致,导致资源泄漏或内存泄漏问题。容器可以对内置线程进行生命周期管理,确保线程的正确销毁和回收。

因此,为了避免这些问题,建议在Java EE容器中避免生成自定义线程,而是使用容器提供的线程管理机制,如EJB和Web服务器的工作线程池。这些线程池可以有效地管理线程资源,并确保线程之间的资源共享和并发控制。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

什么是线程组,为什么 Java 推荐使用?

Java 线程组是一个 ThreadGroup 类对象,它充当了一个父容器,可以将同一类线程分成一组,并提供追踪这些线程状态、统计信息及管理这些线程的方法。...在线程,如果发生未捕获异常,可以通过 Thread.UncaughtExceptionHandler 进行处理。 Java ,虽然线程组是一种功能强大的机制,但实际上并不推荐使用。...3、容易引起歧义 Java ,虽然 ThreadGroup 的设计旨在通过将一组线程分到同一个容器来轻松管理和控制它们,但如果使用错误,可能会导致线程状态。...因此, Java 线程组已基本过时,推荐使用 Executor 框架等新的更实用的工具来进行线程管理。... JDK8之后,API也推出了更加强大的CompletionService接口,它能够执行更为复杂的异步任务并得到结果,这极大地扩展了Java线程编程的功能性。

26020

Java 为什么推荐 while 循环中使用 sleep()

前言最近逛 CSDN 看到一篇文章,文章大意是说为什么循环中推荐使用 sleep 操作,原因在于线程挂起和唤醒会有很大的性能消耗,并推荐使用 Timer 及 ScheduledExecutorService...,并不断进行线程挂起和唤醒原因是否正确主要原因和原文博主所说有很大的关系但不完全正确:我们都知道 Java 线程实际对应着操作系统的一个线程,对线程的挂起和唤醒是一个很耗性能的操作,因此我们需要避免对线程进行挂起和唤醒...比如微服务体系,客户端上报实例状态,或者服务端检测客户端状态都会使用定时轮询的机制。... Java AQS 等待获取锁和线程池任务为空等待新任务时,会使用等待和唤醒操作轮询机制 和 等待和唤醒 一般会结合使用,避免线程频繁的挂起和唤醒。...我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。

74830

你看不懂的spring原理是因为不知道这几个概念

Q:为什么咖啡机会工作? A:因为一粒咖啡豆卡在里凹槽里。 Q:为什么会卡在凹槽里? A:因为这粒咖啡豆太小了,就掉下去了。 Q:为什么太小了就会掉下去?...Java方面,web任凭器一般是指Servlet容器。 Servlet是什么? Servlet只是一个接口。...Web容器会在特定时间调用这些方法。Servlet是提供了一个标准,是J2EE的13个标准接口规范之一。 J2EE是什么?...Sun公司1998年发表JDK1.2版本的时候,使用了新名字Java 2 Platform。...Web容器和Netty的关系 Web容器(如tomcat、jetty)主要处理从客户端传过来的消息,将消息分给worker线程来处理。worker线程做的事情就是通过Servlet来做的。

50620

9.java web的发展 javaweb是什么 J2EE发展历史 规范 J2EE是什么 发展背景 组件标准 J2EE好处作用 Servlet 含义 本质 发展 javaweb的发展 servl

而在 Servlet ,每个请求由一个轻量级的 Java 线程处理(而不是重量级的操作系统进程)。...3).传统 CGI ,如果有 N 个并发的对同一 CGI程序的请求,则该CGI程序的代码在内存重复装载了 N 次; 而对于 Servlet,处理请求的是 N 个线程,只需要一份 Servlet 类代码...性能优化方面,Servlet 也比 CGI 有着更多的选择。 广义上是:基于Java技术的Web组件,被容器托管,用于生成动态内容。...而且是非常直观的Servlet写前端代码,这使得实现各种页面效果和风格非常困难。...servlet请求创建新的java线程 利用容器还能够实现声明的方式部署描述文件来配置和修改安全性,而不是硬编码 而且,是容器把jsp翻译成真正的java,用户点击链接指向的是servlet而不是静态页面

1.6K10

微服务:Java EE的拯救者还是掘墓人?

可惜的是,Spring被一路追捧,人们几乎把它跟Java EE容器混为一谈,它仍然运行在Java EE的Servlet容器里,这些容器沿用的是十年前的设计,并没有考虑到多核CPU和NIO。...如果服务器的线程使用得当,Node.js可以极大地提升响应速度,单个服务器的吞吐量可以媲美一个Java EE服务器集群。Node.js是一个很好的作品,但它也有自己的局限性。...基于Undertow Core构建的Light Java Framework是一个微服务容器,它支持设计驱动及生成代码,并支持运行时安全和运行时验证。...这就是为什么要把Java微服务运行在一个单独的进程里,而不是Java EE容器或servlet容器。 微服务一般会提供基于HTTP/JSON的API端点。...随着微服务逐渐流行起来,很多厂商开始尝试把他们的Java EE Web服务转成微服务,这样他们就可以继续卖他们的过时产品,API Gateway就是这些厂商的一个。

49870

微服务:Java EE的拯救者还是掘墓人?

可惜的是,Spring被一路追捧,人们几乎把它跟Java EE容器混为一谈,它仍然运行在Java EE的Servlet容器里,这些容器沿用的是十年前的设计,并没有考虑到多核CPU和NIO。...如果服务器的线程使用得当,Node.js可以极大地提升响应速度,单个服务器的吞吐量可以媲美一个Java EE服务器集群。Node.js是一个很好的作品,但它也有自己的局限性。...基于Undertow Core构建的Light Java Framework是一个微服务容器,它支持设计驱动及生成代码,并支持运行时安全和运行时验证。...这就是为什么要把Java微服务运行在一个单独的进程里,而不是Java EE容器或servlet容器。 微服务一般会提供基于HTTP/JSON的API端点。...随着微服务逐渐流行起来,很多厂商开始尝试把他们的Java EE Web服务转成微服务,这样他们就可以继续卖他们的过时产品,API Gateway就是这些厂商的一个。

85640

万字详解 Tomcat 组成与工作原理

Java EE 是 Sun 公 司为企业级应用推出的标准平台,定义了一系列用于企业级开发的技术规范,除了上述的之外,还有 EJB、Java Mail、JPA、JTA、JMS 等,而这些都依赖具体容器的实现...上图对比了 Java EE 容器的实现情况,Tomcat 和 Jetty 都只提供了 Java Web 容器必需的 Servlet 和 JSP 规范,开发者要想实现其他的功能,需要自己依赖其他开源实现。...Glassfish 是由 Sun 公司推出,Java EE 最新规范出来之后,首先会在 Glassfish 上进行实 现,所以是研究 Java EE 最新技术的首选。...容器的定期执行:backgroundProcess,由 ContainerBase 来实现的,并且只有顶层容器才会开启线程。...,线程本身返回至容器,此时 Servlet 还没有生成响应数据,异步线程处理完业务以后,可以直接生成响应数据(异步线程拥有 ServletRequest 和 ServletResponse 对象的引用)

2.6K10

影响Java EE性能的十大问题

2.Java EE中间件环境规范不足 “没有规矩,不成方圆”。第二个比较普遍的原因是Java EE中间件或者基础架构规范。项目初始,新平台上面没有制定合理的规范,导致系统稳定性差。...7、Java32位的VM上太大,导致本机堆溢出,具体可以表现为OOM试着去链接一个新的Java EE应用程序、创建一个新的Java线程或者需要计算本地内存分配任务。...2、Java EE客户端应用程序和外部系统之间链接超时,使数据丢失或者值太高导致客户端线程被卡住,从而导致多米拉效应。 3、超时,但程序仍正常执行,可是中间件处理这种奇怪的路径。...大多数Java EE容器都能有多种方案供你的应用程序和业务进程选择。 如果没有进行适当的调整和实践,那么Java EE容器可能会处于一种消极的状态。...3、Java EE容器复制过程(集群)也会受到影响,并且会让故障转移功能(如多播或单播数据包损失)处于风险。 JDBC行数据“预取”、XML数据压缩和数据缓存可以减少网络延迟。

87460

影响Java EE性能的十大问题

2.Java EE中间件环境规范不足 “没有规矩,不成方圆”。第二个比较普遍的原因是Java EE中间件或者基础架构规范。项目初始,新平台上面没有制定合理的规范,导致系统稳定性差。...Java32位的VM上太大,导致本机堆溢出,具体可以表现为OOM试着去链接一个新的Java EE应用程序、创建一个新的Java线程或者需要计算本地内存分配任务。...Java EE客户端应用程序和外部系统之间链接超时,使数据丢失或者值太高导致客户端线程被卡住,从而导致多米拉效应。 超时,但程序仍正常执行,可是中间件处理这种奇怪的路径。...大多数Java EE容器都能有多种方案供你的应用程序和业务进程选择。 如果没有进行适当的调整和实践,那么Java EE容器可能会处于一种消极的状态。...Java EE容器复制过程(集群)也会受到影响,并且会让故障转移功能(如多播或单播数据包损失)处于风险。 JDBC行数据“预取”、XML数据压缩和数据缓存可以减少网络延迟。

41320

初识JAVAJAVA最全基础知识复习(超详尽!!值得收藏!)

为了提高性能,软件发布后,assertion检查通常是关闭的。 24、GC是什么? 为什么要有GC?...java的保留字,现在没有java中使用。 30、启动一个线程是用run()还是start()?...55、char型变量能不能存贮一个中文汉字?为什么? 能够定义成为一个中文的,因为java以unicode编码,一个char占16个字节,所以放一个中文是没问题的。...该容器提供的接口严格遵守J2EE规范的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE的WEB容器。...EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。

68110

微服务:Java EE的拯救者还是掘墓人?

可惜的是,Spring被一路追捧,人们几乎把它跟Java EE容器混为一谈,它仍然运行在Java EE的Servlet容器里,这些容器沿用的是十年前的设计,并没有考虑到多核CPU和NIO。...如果服务器的线程使用得当,Node.js可以极大地提升响应速度,单个服务器的吞吐量可以媲美一个Java EE服务器集群。Node.js是一个很好的作品,但它也有自己的局限性。...基于Undertow Core构建的Light Java Framework是一个微服务容器,它支持设计驱动及生成代码,并支持运行时安全和运行时验证。...这就是为什么要把Java微服务运行在一个单独的进程里,而不是Java EE容器或servlet容器。 微服务一般会提供基于HTTP/JSON的API端点。...随着微服务逐渐流行起来,很多厂商开始尝试把他们的Java EE Web服务转成微服务,这样他们就可以继续卖他们的过时产品,API Gateway就是这些厂商的一个。

54730

InfoQ最新Java趋势报告及2022年解读

Loom 项目与虚拟线程 Sheasha: Java 性能方面有很多令人兴奋的变化。许多开发者都很高兴看到 Loom 项目的更新,因为他们现在可以尝鲜一些新的特性,如虚拟线程。...虽然一些特性,如虚拟线程,现在已经准备好用于生产环境,但毫无疑问,许多开发者都在热切地等待它们从预览状态移出,成为 LTS 的一部分,并有望 2023 年 9 月与 Java 21 一起发布。...容器 Sheasha:随着越来越多的 Java 工作负载迁移到容器,我们看到了一种转变——从只讨论如何容器Java 应用程序到如何最好地容器Java 应用程序。...我们看到了更多关于如何在容器运行应用程序的最佳实践。例如,微软发表了一篇关于内存分配和垃圾收集的文章。 Evans:Java 应用程序的容器化仍在继续演进当中。...这就是为什么我们看到越来越多的公司现代化工具上进行了投入。一些项目(如 OpenRewrite)对我们来说很重要,因为它们可以让我们抛弃应用程序的同时保持创新。

39720

面试高频题:Spring和SpringMvc父子容器你能说清楚吗

有点类似java里面的继承的味道,子类可以继承父类共有方法和变量,可以访问它们,父类不可以访问子类的方法和变量。在这里就会衍生出几个比较经典的问题: 为什么需要父子容器?...J2EE三层架构service层我们一般使用spring框架来管理, 而在web层则有多种选择,如spring mvc、struts等。因此,通常对于web层我们会使用单独的配置文件。...因为解析@ReqestMapping注解的过程initHandlerMethods()函数只是对Spring MVC 容器的bean进行处理的,并没有去查找父容器的bean, 因此不会对父容器中含有...为什么可行因为无非就是把所有的东西全部交给子容器来管理了,子容器执行了refresh方法,把它的配置文件里面的东西全部加载管理起来来了。...如果你的项目里有用到事物、或者aop记得也需要把这部分配置需要放到Spring-mvc子容器的配置文件来,不然一部分内容容器和一部分内容容器,可能就会导致你的事物或者AOP生效。

1.4K10

设计模式—— 七 :单例模式

Sngleton类称为单例类,通过使用private的构造函数确保了一个应用只产生一个实 例,并且是自行实例化的(Singleton自己使用new Singleton())。...● 由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要 比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过应用启动时直接产生一 个单例对象,然后用永久驻留内存的方式来解决...(Java EE采用单例模式时需要注意JVM 垃圾回收机制)。...单例模式的应用比较广泛,其中最经典的是Spring,每个Bean默认是单例的,这样做的优点是Spring容器可以管理这些Bean的生命期,决定什么时候创建 出来,什么时候销毁,销毁的时候要如何处理,...如果采用非单例模式(Prototype类型),则Bean初始化后的管理交由J2EE容器,Spring容器不再跟踪管理Bean的生命周期。

26920

Java事务总结详解

增加、修改、删除都是通过相应方法间接来实现的,事务的控制也相应转移到Java程序代码。 因此,数据库操作的事务习惯上就称为Java事务。 2. 为什么需要Java事务?...相对编码实现JTA事务管理, 我们可以通过EJB容器提供的容器事务管理机制(CMT)完成同一个功能,这项功能由J2EE应用服务器提供。...这使得我们可以简单的指定将哪个方法加入事 务,一旦指定,容器将负责事务管理任务。这是我们土建的解决方式,因为通过这种方式我们可以将事务代码排除逻辑编码之外,同时将所有困难交给J2EE容 器去解决。...3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。 五、总结 Java事务控制是构建J2EE应用不可缺少的一部分,合理选择应用何种事务对整个应用系统来说至关重要。...第一个事务被提交或回滚之后,下次当连接执行以上任何语句时,数据库引擎实例都将自动启动一个新事务。该实例将不断地生成隐性事务链,直到隐性事务模式关闭为止。

3.8K10

一篇告诉你什么是Spring

Spring 是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Development...Spring的优点 方便解耦,简化开发 (高内聚低耦合) Spring就是一个大工厂(容器),可以将所有对象创建和依赖关系维护,交给Spring管理,spring工厂是用于生成bean AOP编程的支持...Spring bean 单例与线程安全问题 线程安全一直是代码编写的重地,我们大多时候系统开发不会使用多线程。...Spring bean 的生命周期 传统的Java应用,bean的生命周期很简单,使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了。...(推荐使用) 声明式事务,配置文件配置(推荐使用) 声明式事务又分为两种: 基于XML的声明式事务 基于注解的声明式事务 比较重要的一点是 @Transactional(rollbackFor =

1.1K00

Spring核心——设计模式与IoC 原

虽然我们开发的过程为了实现一些高级功能会继承重写某些方法后,然后再将我们的新类添加到Ioc,但是Spring本身并不太鼓励这样去实现。 除了前面4项原则,迪米特法则和开闭原则并没有太直观的体现。...如果不给bean制定id,那么容器会为他自动生成一个唯一的序列号。 name可以配合标签使用来转换别名。...往后的AOP等功能都是建立Bean的基础上拓展开来的——要使用Spring这些功能首先得是一个Ioc容器的Bean。Bean实际上就是一个Java类的实例,只不过实例化工作交给了Ioc容器而已。...由于默认情况下bean的scope参数是singleton,所以创建出来bean指定scope的状态下都是一个单例。...此外singleton模式和 Gang of Four (GoF)定义的通过ClassLoad实现的单例模式也有很大的区别,但是对于Ioc容器而言,任何bean一个容器绝对是一个单例,现在所有的资源都通过容器来管理依赖关系

78720

Java面试葵花宝典打印版【7】

首先需要定义一个基类,该类的子类通过不同的方法实现了基类的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。...95、请对以下在J2EE中常用的名词进行解释(或简单描述) web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器的环境变量接口交互,不必关注其它系统问题...该容器提供的接口严格遵守J2EE规范的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE的WEB容器。EJB容器:Enterprise java bean 容器。...只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。...Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。Java,每个异常都是一个对象,它是Throwable类或其它子类的实例。

50140

Java 近期新闻:结构化并发、Java 满 27 岁、Micronaut 3.5.0

JEP 406(switch 模式匹配预览, JDK 17 交付)和 JEP 420(switch 模式匹配第二个预览版, JDK 18 交付)最近将类型匹配扩展到了 switch 的 case... Loom 项目的支持下,这个孵化的 JEP 提议通过引入一个库来简化多线程编程,将在不同线程运行的多个任务视为一个工作单元。这可以简化错误处理和取消操作,提高可靠性,并增强可观察性。...对于 JDK 19,我们鼓励开发者通过 Java Bug 数据库报告缺陷。 虚拟线程 JDK 19 的新特性至少将涉及两个与 Loom 项目相关的 JEP。...Jakarta EE 通往 Jakarta EE 10 的道路上,Eclipse 基金会 Jakarta EE 开发大使 Ivar Grimstad 在他的每周博客 Hashtag Jakarta...EE 宣布,除了 Jakarta Security 3.0 之外,所有针对 Jakarta EE 10 规范的发布审查现在都已经完成,而前者应该也很快就可以完成。

68120

设计模式 之 单例模式

由于单例模式只生成一个实例,所以减少了系统的性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过应用启动时直接产生一个单例对象,然后用永久驻留内存的方式来解决(Java...EE采用单例模式时需要注意JVM垃圾回收机制)。...单例模式的使用场景     一个系统,要求一个类有且仅有一个对象,如果出现多个对象就会出现“不良反应”,可以采用单例模式,具体的场景如下: 要求生成唯一序列号的环境; 整个项目中需要一个共享访问点或共享数据...如果采用非单例模式(Prototype类型),则Bean初始化后的管理交由J2EE容器,Spring容器不再跟踪管理Bean的生命周期。     ...如果确实需要采用单例模式来记录有状态的值,有两种办法可以解决该问题: 由容器管理单例的生命周期 Java EE容器或者框架级容器(如Spring)可以让对象长久驻留内存。

63520
领券