棒棒糖先生 2009-05-22 21:12
浏览 155
已采纳

前几天的面试题,线程方面。

public class T()
{
public static void main(String args[])
{
T t1= new T();
T t2= new T();
synchronized(t1)
{
try{
t2.wait();
System.out.println("first line");
}
catch(InterruptException e)
{
System.out.println("INTERRUPT");
}
catch(Exception e)
{
System.out.println("EXCEPTION");
}
finally
{
System.out.println("FINALLY");
}
}
System.out.println("last line");
}
}
请问输出结果,及为什么。

  • 写回答

6条回答 默认 最新

  • iteye_3760 2009-05-23 01:01
    关注

    这个程序关键是synchronized这个关键词看看程序synchronized(t1) 即t1被锁,而 t2 没有受到限制,可能导致多线程程序调用混乱。
    t2.wait()执行的时候t1受锁的限制必然出错产生异常。
    Exception肯定是会输出的,只要有异常肯定会输出这一句。
    然后开始研究InterruptedException 这个异常是sleep wait等方法被取消执行时产生的异常,这里t2继续执行wait()不受影响,不产生InterruptedException异常。
    最后就算不懂多线程也也可以肯定最后输出的两句
    [code="java"]FINALLY

    last line [/code]
    好吧 就这些 。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!