在做一些算法开发的时候 我们经常在使用递归的时候 经常会遇到堆栈溢出,通常我们会想到设置jvm的参数来增加线程栈大小,但是这种会造成每个线程的栈都变的很大,此处介绍一个在代码中扩大线程栈大小。
public Thread(ThreadGroup group, Runnable target, String name,
long stackSize)
Thread类提供一个构造方法 可以指定线程栈大小
public static void main(String[] args) {
new Thread(null, new Runnable() {
int dep = 0;
@Override
public void run() {
try {
d();
} catch (Throwable e) {
}
System.out.println(dep);
}
void d() {
dep++;
d();
}
}).start();
}
public static void main(String[] args) {
new Thread(null, new Runnable() {
int dep = 0;
@Override
public void run() {
try {
d();
} catch (Throwable e) {
}
System.out.println(dep);
}
void d() {
dep++;
d();
}
},"thread-1",1024*1024*30).start();
}
将栈大小设置为30M 此时 栈的深度可以达到650w左右