设置Linux环境下Java应用程序的最大创建线程数



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

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

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

您可以在Linux中通过添加一个认可库来定义您自己的ThreadGroupThread类来实现这一点。这可以以一种不需要更改应用程序的方式添加到JVM中,并且可以使用环境变量来设置限制。

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

您可以创建自己的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;
}

最新更新