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");
}
}
请问输出结果,及为什么。
前几天的面试题,线程方面。
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
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]
好吧 就这些 。。。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报