关于多线程出现异常

qq_36873640 2016-12-02 07:50:34
public class TestThread1 {
public static void main(String[] args) {
Thread2 t1 = new Thread2();
t1.setName("子线程");
Thread.currentThread().setName("主-----线程");
t1.start();
for (int j = 1; j <= 50; j++) {
System.out.println(Thread.currentThread().getName() + ":" + j);
}
}
}
class Thread2 extends Thread {
//出现Exception in thread "main" java.lang.StackOverflowError
//Thread2 t = new Thread2();// 加入此句为什么会出现异常。
public void run() {
for (int i = 0; i <= 50; i++) {
System.out.println(Thread.currentThread().getName() + ":" + i);
if (i == 30) {
yield();
System.out.println(isAlive());
}
}
}
}
...全文
133 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OOM_and_Exception 2016-12-02
  • 打赏
  • 举报
回复
楼上正解,十分同意,
ichavin 2016-12-02
  • 打赏
  • 举报
回复
引用 1 楼 hemowolf 的回复:
这跟线程没关 一个类的对象在创建时,会初始化自己内部成员变量 在 Thread2 中:Thread2 t = new Thread2(); 当main 中创建 Thread2 对象 时,Thread2 在初始化时会调用 Thread2 t = new Thread2(); 于是,又一个内部的 Thread2 对象将被创建,这个对象创建时再创建一个内部的 Thread2 对象 这个再次被创建的 Thread2 对象在初始化时,再再创建它的内部的 Thread2 对象 于是这个再再次被创建的 Thread2 对象在初始化时,再再再创建它的内部的Thread2对象 于是这个再再再次…… 这是一个无底洞
同意此兄台观点
小灰狼 2016-12-02
  • 打赏
  • 举报
回复
这跟线程没关 一个类的对象在创建时,会初始化自己内部成员变量 在 Thread2 中:Thread2 t = new Thread2(); 当main 中创建 Thread2 对象 时,Thread2 在初始化时会调用 Thread2 t = new Thread2(); 于是,又一个内部的 Thread2 对象将被创建,这个对象创建时再创建一个内部的 Thread2 对象 这个再次被创建的 Thread2 对象在初始化时,再再创建它的内部的 Thread2 对象 于是这个再再次被创建的 Thread2 对象在初始化时,再再再创建它的内部的Thread2对象 于是这个再再再次…… 这是一个无底洞

62,625

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧