java - Tomcat 中运行计划任务

标签 java multithreading hibernate jsp

我的问题是关于 this answer这似乎适合我的情况(tomcat)。但是我看到它使用了 newSingleThreadScheduledExecutor() 。就我而言,必须执行的定期任务可能会持续很长时间,我想确保它在完成之前不会阻止我的网站(作为单独的线程)。此外,我想确保我的任务 Runnable 将能够共享网站正在使用的 mySQL 连接池(通过 hibernate)。 那么,这仍然是正确的方法还是我必须使用其他方法?

最佳答案

I want to make sure that it will not block my web site until it has completed (run as a separated Thread)

HTTP 连接器线程池和分配给运行计时器任务的线程池不同。它们彼此不依赖,也不会阻止您的网站。

In addition I want to make sure that my task Runnable will be able to share mySQL connection pool (through hibernate) that the web site is using. So, is that still the correct approach or do I have to use something else?

使用类似 commons DBCP 的框架配置公共(public)连接池并在 JNDI 上查找资源。一旦您查找到该 DataSource 并且连接上的工作已终止,请将连接返回到池中。

这个方法很好。

关于java - Tomcat 中运行计划任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542629/

相关文章:

java - 将对象数组传递给方法

java - 使用 JBoss 自定义类加载器

后台线程中的 ASP.NET 异常处理

java - Hibernate 条件查询以匹配所有子集合元素

java - 使用 Hibernate 的存储过程在嵌入式 h2 数据库中失败

java - 编译错误: package javax. servlet.jsp不存在

java - Eclipse - 在“问题”选项卡中显示超过 100 个警告

python - 我是否过度生成了 IO 绑定(bind)的网络抓取线程?

multithreading - 使用 WaitForSingleObject() 等待线程完成

java - 在 Java 中,Postgres 中带有枚举的列应使用什么类型?