关于线程方法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