A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨同旺 中级黑马   /  2013-4-23 21:36  /  1176 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨同旺 于 2013-4-23 22:19 编辑

以下的代码,method1和method2使用的是同一个锁,但为什么会报错?
Exception in thread "Thread-0" java.lang.StackOverflowError
报的错是线程0的栈溢出,为什么报这个错?
---------------------------------------------------------------------------------
  new Thread(new Runnable()
  {
   @Override
   public void run()
   {
    method1();
   }
   synchronized void method1()
   {
    method2();   
   }
   synchronized void method2()
   {
    method1();
   }
  }
  ).start();



2 个回复

倒序浏览
本帖最后由 杨同旺 于 2013-4-23 23:09 编辑

帖子发错了,以上是死循环,所以报这个错
回复 使用道具 举报
你写的这个代码形成递归了!
所以才会出现这个异常
同步不能够这样嵌套,所以才不写在那里!
你写那里编译都不通过!
操作共有数据才会写同步!
你这里同步不同步我个人感觉都没多大关系
希望可以帮到你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马