使用Linux为Java应用程序设置最大创建线程数

时间:2015-08-11 21:01:56

标签: java linux multithreading

我在Centos下运行Java应用程序,并对如何设置创建的最大线程数的限制的方式感到好奇。请不要在一个给定时间与最大线程数混淆。

例如,每天应用程序创建并销毁一个线程。在Linux设置中的哪个地方我可以设置只能创建250个新线程。然后在第250天之前的某个地方(之前由于创建了其他线程)它将崩溃(抛出异常),因为它已达到创建的新线程的允许限制。

2 个答案:

答案 0 :(得分:1)

您可以制作自己的ThreadFactory,例如

public class LimitedThreadFactory implements ThreadFactory {

    public LimitedThreadFactory(final int limit) {
        this.limit = limit;
    }

    public Thread newThread(final Runnable runnable) {
        if (numberOfThreadsCreated >= limit) {
            // exit gracefully
        }
        // create the thread, maybe with new Thread(runnable);
        numberOfThreadsCreated++;
    }

    private final int limit;
    private int numberOfThreadsCreated;
}

答案 1 :(得分:1)

Linux仅强制使用资源,而不是使用的资源(除了总CPU消耗)

您可以通过添加endorsed库来定义自己的ThreadGroupThread类,从Linux执行此操作。这可以以不需要更改应用程序的方式添加到JVM中,并且可以使用环境变量来设置限制。

这仍然需要预先编写一些代码,但JDK是一个开发环境。