stackSize是Thread类的局部变量,官方给出的解释是:当前线程的指定栈大小,如果线程的创建者不指定大小,那默认值就是0,对这个变量值如何进行操作取决于JVM,有些JVM会忽略掉这个参数。
public class CreateThread3 {
// 不设置stacksize的情况下 counter输出为14218
// 设置stacksize为1<<24后counter输出为260541
private static int counter = 0;
public static void main(String[] args) {
Thread t1 = new Thread(null, new Runnable() {
@Override
public void run() {
add(1);
}
public void add(int i) {
counter++;
try {
add(i + 1);
} catch (Error e) {
System.out.println(counter);
}
}
}, "test", 1 << 24);
t1.start();
}
}