java吧 关注:1,216,224贴子:12,665,854

自学中,在多线程有疑惑想不通,求高手解答

只看楼主收藏回复



为什么在同步函数里面,第10行调用wait()方法时,抛出的InterruptedExcetpion,被catch捕获后,当时并没用执行里面的打印语句。而要等到第44/45行调用线程的中断方法,收到一个InterruptedException,被catch捕获后才执行catch里的打印语句。我记得在前面学异常的时候,try检测到语句抛出异常,catch捕获后,会立即执行里面的语句啊?这是什么回事,求高手解答


IP属地:广西1楼2017-08-19 17:37回复
    有人吗?求助。。。。。


    IP属地:广西2楼2017-08-19 17:49
    回复
      就没有人来帮帮忙吗?


      IP属地:广西3楼2017-08-19 18:00
      回复
        顶顶顶


        IP属地:广西5楼2017-08-19 18:18
        回复
          大家帮顶下


          IP属地:广西来自手机贴吧7楼2017-08-19 18:25
          回复
            这么大一个吧,咋就没人呢???。。。。?


            IP属地:广西来自手机贴吧10楼2017-08-19 18:36
            回复
              这么大一个吧,咋就没人呢???。。。。?


              IP属地:广西来自手机贴吧11楼2017-08-19 18:36
              回复
                wait释放当前锁,并没有抛出异常


                IP属地:四川来自Android客户端13楼2017-08-19 19:05
                收起回复


                  IP属地:四川来自iPhone客户端14楼2017-08-19 19:11
                  回复
                    你说的那个当时并没有执行catch里面的内容是什么情况?是把中断方法注释掉之后吗?没有调用中断方法当然不会出现异常啊


                    IP属地:北京来自Android客户端15楼2017-08-19 20:10
                    收起回复
                      我也在自学,我说一说我的理解吧,wait()并不会抛出异常,只是使线程等待,进入等待池,interrupt()方法会在线程被sleep(),yield(),wait()之一方法阻塞的时候抛出interrupt异常,中断线程的休眠。


                      IP属地:广东16楼2017-08-19 23:34
                      收起回复
                        你自学多久了啊。。。。


                        IP属地:广东来自Android客户端17楼2017-08-19 23:37
                        收起回复
                          首先你创建了两个thread共享了同一个runnable实现,相当于run()方法是多个线程之间的共享资源了。当第一个线程t0执行run方法时,执行到wait,此线程挂起阻塞并释放锁,后面代码停止执行了。然后第二个线程执行到wait,同样挂起阻塞并释放锁,后面代码停止执行。接着t0或者t1调用interrupt中断线程了,他们都是阻塞状态,会抛异常被捕获到,所以调用了catch的打印语句和后面的代码。因为处于while死循环中and异常又被try catch住,t0和t1又开始执行wait,进入挂起无限等待中。。。


                          IP属地:广东18楼2017-08-20 01:21
                          收起回复
                            黄康


                            IP属地:广西来自Android客户端19楼2017-08-20 08:26
                            收起回复
                              加油


                              IP属地:浙江来自Android客户端20楼2017-08-20 09:06
                              收起回复