java - 关于 Terracotta 和 Servlet/共享线程

标签 java multithreading terracotta

我有一个需要 distrubte 的系统,其工作原理如下。由 tomcat 提供服务的 Servlet 启动并产生具有大量共享(分布式)字段的线程。因此,我将线程设置为根,并尝试从 servlet 构造函数正常生成线程。但是,日志记录表明我尝试共享的 Runnable 构造函数永远不会完成。可能是什么原因造成的?

在我的 servlet 中,我有一个线程实例,我尝试将其作为根共享,并且日志记录表明一切正常,直到实现 runnable 的类 (UpdaterThread) 的构造函数结束。

我有以下内容:

Servlet:

print "创建新线程"; updaterThread = 新的 UpdaterThread(args); 打印“启动线程。”; 新线程( updaterThread ).start();

现在,我在 tomcat 控制台输出中从未看到“启动线程”,尽管我可以看到直到 UpdaterThread 构造函数末尾的所有打印语句。 UpdaterThread 维护对映射(由 servlet 共享)、字符串、SQL 连接、语句、ReentrantReadWriteLock、Long 以及不可共享的 transient boolean 值和 Long 的引用。

在 UpdaterThread 的构造函数中,我传递了对共享映射的引用和字符串的值。如果没有启用 terracotta,我可以超越这一点。什么会导致 tomcat 和 terracotta 挂起而没有任何错误消息? rrwl 锁只有在调用后面的方法时才会使用,但我在程序执行过程中从未走得那么远。帮忙?

最佳答案

已解决。我必须重新启动 Terracotta 服务器,然后它让我看到错误,表明 Statement 和 Connection 是需要临时处理的不可移植类。

关于java - 关于 Terracotta 和 Servlet/共享线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/727670/

相关文章:

java - 使用 Terracotta 作为持久化解决方案

Java机器人: Repeating every 30 minutes

java - 确定何时关闭 Java 中的声音播放线程

java - Mybatis的分布式缓存

python - 通过套接字进行通信的最佳方式是什么?

c# - 暂停线程直到手动恢复

ehcache - 缩放 Terracota - 免费且开源?

java - MongoDB 和 Apache Mahout 连接错误

java - Java 中的 Do/While 语句

java - 无法通过序列化正确赋值