я написал класс Thread пула со ссылкой http://www.informit.com/articles/article.aspx?p=30483&seqNum=5Сколько потоков может поддерживать Java VM в Linux?
среды: Windows7 4 ф
Executed мою программу с 70,000 тему в Windows 7, под JDK 1.5 он прошел через успешно. Не используются аргументы vm.
Тот же код, который я попытался выполнить с 5000 версией Thread in Linux, которая находится под виртуальной коробкой с базой памяти 4 ГБ. с аргументами vm -xms512m -xmx1024m. Он выполняет до 2156 потоков и бросает исключение
Исключение в потоке «основной» java.lang.OutOfMemoryError: не удалось создать новую родную нить на java.lang.Thread.start0 (Native Method) в java.lang. Thread.start (Thread.java:597) на testthreadpool.ThreadPool. (ThreadPool.java:38) в testthreadpool.TestThreadPool.main (TestThreadPool.java:16)
Но тот же самый код отлично работать в Windows7.
Могу ли я узнать, почему возникает эта ошибка. Имеет ли этот код Java 1 ГБ памяти для запуска всего 5000 нитей? ...
Мое фактическое требование - удерживать ThreadPool с 10 000 Workthread.
Ограничение не должно использовать пакет параллелизма. Необходимо использовать только палинную Java-тему. – user500796
Может быть, плохая идея.Но нет никаких ограничений на создание количества потоков и сохранение его в режиме runnable, когда я даю достаточно места для памяти. Его не удается около 2156. – user500796
Любопытно, почему вы не можете использовать 'java.util.concurrent'? – Jeremy