在最新的OSX中是不是可以有10k-40k线程?

时间:2018-06-11 03:25:01

标签: java multithreading macos

我已经在StackOverflow中检查了这两篇关于线程限制的帖子OSX 10.6.3JVM support,但是当我尝试使用以下测试测试我的系统线程数限制时,我将总是得到(比约2000)少于他们在这两篇帖子中提到的内容(例如40_000)。

我还检查了这个less is more关于线程限制以进行更多本地测试,但结果仍然非常令人沮丧。

F.Y.I

使用sysctl kern.num_threads检查我的mac中的线程限制,我得到 kern.num_threads:10240

-Xmx2048m -Xms2048m -Xss200k ==> 1286
-Xmx4096m -Xms3072m -Xss320k ==> 1048
-Xmx4096m -Xms3072m          ==> 1153
-Xmx32m   -Xms32m            ==> 1309
-Xmx32m                      ==> 2027

我是否遗漏了导致这种糟糕表现(低线程限制)的事情?

public class TestThreadCountLimit {
    private static Object s = new Object();
    private static int count = 0;

    public static void main(String[] argv) {
        for (; ; ) {
            Thread thread = new Thread(() -> {
                synchronized (s) {
                    count += 1;
                    System.err.println("New thread #" + count);
                }
                for (; ; ) {
                    try {
                        Thread.sleep(1000);
                    } catch (Exception e) {
                        System.err.println(e);
                    }
                }
            });
            thread.setDaemon(true); // to ensure I can terminate them, I set them daemon on purpose;
            thread.start();
        }
    }
}

0 个答案:

没有答案