欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  互联网

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

程序员文章站 2022-03-04 21:14:10
关于线程方法Thread(ThreadGroup group, Runnable target, String name, long stackSize1、main线程2、自定义线程(不指定StackSize)3、自定义线程(指定较大StackSize)4、综上1、main线程public class TeatStackSize {private static int counter=0;public static void main(String[] args) {try {ad...

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

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