我有一个程序主线程需要不断创建子线程,然后分配任务给该子线程执行。执行完之后子线程就没用了。然后报出了java.lang.OutOfMemoryError: unable to create new native thread异常。 ①java 的内存回收机制不会回收执行 完run方法的线程吗???②java的线程的start方法只能调用一次,那么怎么复用已经存在的且执行完run方法的线程呢?③如何解决该异常呢?
java.lang.OutOfMemoryError: unable to create new native thread
run
start
走同样的路,发现不同的人生
Java 스레드 풀 사용
Java 메모리 재활용 메커니즘은 실행이 완료된 스레드를 재활용합니다run. 이러한 상황에서는 스레드 생성 속도가 너무 빨라서 생성된 스레드 중 대부분이 여전히 실행 중인 것으로 추정됩니다.
@xixicat과 동일한 스레드 풀 사용
시스템이 생성할 수 있는 총 스레드 수는 운영체제에 따라 다르므로 이 예외를 해결하려면 스레드 풀을 사용하세요
Java 스레드 풀 사용
Java 메모리 재활용 메커니즘은 실행이 완료된 스레드를 재활용합니다
run
. 이러한 상황에서는 스레드 생성 속도가 너무 빨라서 생성된 스레드 중 대부분이 여전히 실행 중인 것으로 추정됩니다.@xixicat과 동일한 스레드 풀 사용
시스템이 생성할 수 있는 총 스레드 수는 운영체제에 따라 다르므로 이 예외를 해결하려면 스레드 풀을 사용하세요