关于兵马俑和Servlets /共享线程

时间:2009-04-07 21:31:22

标签: java multithreading terracotta

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

在我的servlet中,我有一个我试图以root身份共享的线程实例,并且logging指示一切正常,直到实现runnable的类(UpdaterThread)的构造函数结束。

我有以下内容:

Servlet:

打印“创建新主题”; updaterThread = new UpdaterThread(args); 打印“启动线程”。 new Thread(updaterThread).start();

现在,我从未在tomcat控制台输出中看到“启动线程”,尽管我可以看到所有print语句直到UpdaterThread构造函数的末尾。 UpdaterThread维护对地图的引用(由servlet共享),String,SQL连接,Statement,ReentrantReadWriteLock,Long和瞬态布尔值以及Long不能共享。

在UpdaterThread的构造函数中,我传递了对共享映射的引用和String的值。如果没有赤土陶器,我可以超越这一点。什么会导致tomcat和赤土陶器没有任何错误消息?在调用以后的方法之前不会使用rrwl锁,但是我从未在程序执行中获得那么多。帮助

1 个答案:

答案 0 :(得分:2)

解决。我不得不重新启动Terracotta服务器,然后让我看到错误,表明Statement和Connection是不可移植的类,需要变为瞬态。