动态设置线程栈大小

在做一些算法开发的时候 我们经常在使用递归的时候 经常会遇到堆栈溢出,通常我们会想到设置jvm的参数来增加线程栈大小,但是这种会造成每个线程的栈都变的很大,此处介绍一个在代码中扩大线程栈大小。



 
 
  1. public Thread(ThreadGroup group, Runnable target, String name,
  2. long stackSize)

Thread类提供一个构造方法 可以指定线程栈大小


 
 
  1. public static void main(String[] args) {
  2. new Thread( null, new Runnable() {
  3. int dep = 0;
  4. @Override
  5. public void run() {
  6. try {
  7. d();
  8. } catch (Throwable e) {
  9. }
  10. System.out.println(dep);
  11. }
  12. void d() {
  13. dep++;
  14. d();
  15. }
  16. }).start();
  17. }


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


 
 
  1. public static void main(String[] args) {
  2. new Thread( null, new Runnable() {
  3. int dep = 0;
  4. @Override
  5. public void run() {
  6. try {
  7. d();
  8. } catch (Throwable e) {
  9. }
  10. System.out.println(dep);
  11. }
  12. void d() {
  13. dep++;
  14. d();
  15. }
  16. }, "thread-1", 1024 1024 30).start();
  17. }


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值