动态设置线程栈大小

来源:互联网 发布:勇士雷霆g5数据 编辑:程序博客网 时间:2024/05/22 16:40

在做一些算法开发的时候 我们经常在使用递归的时候 经常会遇到堆栈溢出,通常我们会想到设置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;@Overridepublic void run() {try {d();} catch (Throwable e) {}System.out.println(dep);}void d() {dep++;d();}}).start();}


使用默认的栈我们的程序的深度大约为2w左右

public static void main(String[] args) {new Thread(null, new Runnable() {int dep = 0;@Overridepublic void run() {try {d();} catch (Throwable e) {}System.out.println(dep);}void d() {dep++;d();}},"thread-1",1024*1024*30).start();}


将栈大小设置为30M  此时 栈的深度可以达到650w左右

原创粉丝点击