Weblogic Stuck Thread - ArrayList

时间:2012-07-05 15:31:22

标签: java jsf-2 weblogic-10.x

我们在weblogic10.3.4中部署了JSF2.1应用程序,在我们的一个支持bean中,当我们尝试将引用ArrayList分配给List实例时,weblogic最终在Struck线程中,在我们应用程序的高峰流量期间。 / p>

java.util.ArrayList.indexOf(ArrayList.java:210)
java.util.ArrayList.contains(ArrayList.java:199)

之前任何人都遇到过这个问题。

1 个答案:

答案 0 :(得分:1)

你的意思并不完全清楚,所以我假设你的意思是“卡住的线程”,并且该线程在某个意义上被卡住了,因为它在那一点上不断执行。

我可以想到三个可能的原因。

  • 正在搜索的对象有一个错误的equals(Object)方法,在某些情况下进入无限循环。

  • 有两个(或更多)线程大致同时访问和/或更新列表,并且您没有正确同步。如果您没有正确同步,则线程可能会看到数据结构的不一致视图,并且这会导致它以一种看似不可能的方式运行。

  • 你以某种方式设置了一个病态情况,导致一个线程同时读取和更新列表(不正确)认为它有两个不同的列表。

我敢打赌,这是第二个问题,因为当你的服务器负载很重时,更像是“heisenbugs”。


最后,线程可能不是无限循环,但只是花了很长时间才能做某事。并且循环可能涉及其他代码,但每次你看它都是在那时。