有人可以解释每个连接的每个请求和线程的线程是什么?servlet工作的模型是什么?如何分配线程来处理HTTP请求?是线程/请求还是连接?
让我们说如果我想在我Servlet
的doGet()
方法中异步执行一个耗时的任务,我会使用Java执行程序启动一个新线程,以便在一个单独的线程中完成冗长的计算,并立即发送响应.
现在这样做是否确保我已经释放了处理我的线程,HttpServletRequest
或者它仍然被使用,因为子线程仍在运行?
我无法找到一个明确的答案,确定在会话范围内的JSF托管bean中生成线程是否安全.线程需要调用无状态EJB实例上的方法(依赖注入到托管bean).
背景是我们有一个需要很长时间才能生成的报告.这导致HTTP请求由于我们无法更改的服务器设置而超时.因此,我们的想法是启动一个新线程,让它生成报告并暂时存储它.与此同时,JSF页面显示了一个进度条,轮询托管bean直到生成完成,然后再发出第二个请求来下载存储的报告.这似乎有效,但我想确定我所做的不是黑客.
有没有办法在Java中创建一个全局异常处理程序.我想这样使用:
"When an exception is thrown somewhere in the WHOLE program, exit."
Run Code Online (Sandbox Code Playgroud)
处理程序可能无法捕获try-catch
正文中抛出的异常.
马亭
鉴于不鼓励在Java EE容器中生成线程.是否也不鼓励在Java EE中使用可能产生线程的Java 8并行流?
我正在使用Struts和Spring编写Java EE应用程序.在其中一个操作中,存在大量数据库处理,因此存在性能问题.我想知道的是我可以在这里使用多线程吗?我认为Java EE规范不允许创建自定义线程,而不是由Server创建的线程(我使用Weblogic).请指导我完成这个.
该应用程序具有CPU密集型长进程,当客户端请求时,该进程当前在一个服务器(EJB方法)上串行运行.
理论上可以(从概念的角度)将该进程拆分为N个块并并行执行它们,只要可以收集并连接所有并行作业的输出,然后再将其发送回发起进程的客户端.我想使用这种并行化来优化性能.
如何使用EJB实现此并行化?我知道我们不应该在EJB方法中创建线程.相反,我们应该发布消息驱动bean(MDB)消息(每个作业一个).但那时它不再是同步通话了.在这种情况下,同步似乎是一个要求,因为我需要在将所有作业的输出发送回客户端之前收集它们的输出.
这有解决方案吗?
我有一个Java程序/线程,我想部署到Application Server(GlassFish).该线程应作为"服务"运行,该服务在Application Server启动时启动,在Application Server关闭时停止.
我该怎么做呢?它实际上不是会话Bean或MDB.这只是一个主题.
我想在Java EE(OC4J 10)环境中启动后台进程.用"新线程"启动一个线程似乎是错误的但是我找不到一个好方法.
在我的特殊情况下,使用JMS队列很困难,因为此方法调用的参数不可序列化.
我还想过onTimeout
在会话bean上使用Timer方法,但这不允许我传递参数(据我所知).
是否有任何"正典"方式来处理这样的任务,或者我只需要恢复到"新线程"或者java.concurrent.ThreadPool
.
使用Spring Async与只返回CompletableFuture
自己的优势是什么?
鉴于新的Java8,我们为异步任务获得了非常好的功能,例如CompletableFuture和.paralellStream().如果你在Java SE中运行它,因为我已经理解它你将使用ForkJoinPool,但是如果我在例如Wildfly或TomcatEE中运行以下示例会发生什么?
//Here I start a comp.Future without giving an Executor
test = CompletableFuture.supplyAsync(() -> timeConsumingMethod());
//Here I start a parallel stream
mList.paralell().filter(...).collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)
会发生什么,我将从哪里借用我的资源
java ×9
java-ee ×6
ejb ×5
asynchronous ×2
java-8 ×2
architecture ×1
concurrency ×1
exception ×1
glassfish ×1
java-ee-7 ×1
java-stream ×1
jsf ×1
servlets ×1
spring ×1
threadpool ×1