在做项目的时候,启动了很多线程,每个线程在判断内存为空的时候,都会调用interrupt,但是通过jconsole看,发现线程数一直在增加,并没有关闭,
查了一些文章说,interrupt只是停止了线程,但是并没有关闭线程,所以导致线程数一直在增加,最后导致其他java相关的程序没法启动了(错误信息,大概就是无法创建新实例)
最后用了Thread.join();join会一直等待,直到线程不工作,然后关闭,结合interrupt,停止关闭。
linux下系统会对线程数有默认限制,并不是可以无限创建线程的;java jvm 堆栈大小等一些参数要研究下 -Xms -Xmx -Xss 等等。
下面有两篇博客不错: