日期:2014-05-20  浏览次数:20678 次

在使用java多线程时遇到了问题,困惑
我在项目中为了使用异步,就选择了多线程,刚开始是挺好的,但是运行了几天发现了问题,当访问量大的时候,会创建好多线程,每一个线程都在请求同一个服务,就会有线程处于阻塞状态,最后会导致系统资源耗尽,处于宕机状态。
这种问题该如何解决?或者是我想给每一个线程3秒钟的时间,3秒钟之后就让线程stop了。
求思路。

------解决方案--------------------
用线程池吧。

ExecutorService pool = Executors.Fixed.....(线程数);
....
....很容易用。

跟数据库连接池道理一样。
------解决方案--------------------
探讨
引用:
用线程池吧。

ExecutorService pool = Executors.Fixed.....(线程数);
....
....很容易用。

跟数据库连接池道理一样。

用线程池试试,比如线程池最多可以有100个线程,但是当有101个线程的时候该怎么办?

------解决方案--------------------
探讨
引用:
用线程池吧。

ExecutorService pool = Executors.Fixed.....(线程数);
....
....很容易用。

跟数据库连接池道理一样。

用线程池试试,比如线程池最多可以有100个线程,但是当有101个线程的时候该怎么办?

------解决方案--------------------
既然你都说了不想让它等,那就设置个计时器,到了时间没有反应,就杀死线程喽
------解决方案--------------------
[Quote=引用:]
我用的Timer设置了3秒钟,但是没有起到作用,线程还是继续执行,直到抛出了超时异常。


那可能是你线程在请求服务 。 阻塞在哪里,然后超时后 抛出异常。

这个时候 即使你用 interrupted 是不起作用的。直接stop也不是很好。stop方法是不安全的