从永远到永远-多线程(二)

关于线程方法Thread(ThreadGroup group, Runnable target, String name, long stackSize

  • 1、main线程
  • 2、自定义线程(不指定StackSize)
  • 3、自定义线程(指定较大StackSize)
  • 4、综上

1、main线程

public class TeatStackSize {
	private static int counter=0;
	public static void main(String[] args) {
		try {
			add(0);
		}catch (Error e){
			e.printStackTrace();
			System.out.println(counter);
		}
	}
	private static void add(int num){
		++counter;
		add(num+1);
	}
}

运行结果:

2、自定义线程(不指定StackSize)

public class TestStackSize02 {
	private static int counter=0;
	public static void main(String[] args) {
		Thread t= new Thread(null, new Runnable() {
			@Override
			public void run() {
				try {
					add(0);
				}catch (Error e){
					e.printStackTrace();
					System.out.println(counter);
				}
			}
			private void add(int num){
				++counter;
				add(num+1);
			}
		},"测试stackSize");
		t.start();
	}
}

3、自定义线程(指定较大StackSize)

public class TestStackSize03 {
	private static int counter=0;
	public static void main(String[] args) {
		Thread t= new Thread(null, new Runnable() {
			@Override
			public void run() {
				try {
					add(0);
				}catch (Error e){
					e.printStackTrace();
					System.out.println(counter);
				}
			}
			private void add(int num){
				++counter;
				add(num+1);
			}
		},"测试stackSize",1>>96);
		t.start();
	}
}

4、综上

虚拟机在创建main线程时,默认指定了较大的stacksize。
自定义线程,如不指定stacksize,该线程对应的虚拟机栈大小是有限的。
但是总的虚拟机栈大小是不变的,指定的stacksize越大,则创建线程个数越少。

通常使用 -Xss 1024M等指定

本文地址:https://blog.csdn.net/MACHENIC/article/details/107623280

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐