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]
好吧 就这些 。。。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!