博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Thread类的常见问题
阅读量:4609 次
发布时间:2019-06-09

本文共 815 字,大约阅读时间需要 2 分钟。

void waitForSignal(){    Object obj = new Object();    synchronized(Thread.currentThread())    {        obj.wait();        obj.notify();    }}

解析:

这题有两个错误的地方,第一个错误是 wait() 方法要以 try/catch 包覆,或是掷出 InterruptedException 才行  

因此答案就是因为缺少例外捕捉的   InterruptedException

第二个错误的地方是, synchronized 的目标与 wait() 方法的物件不相同,会有 IllegalMonitorStateException ,不过 InterruptedException 会先出现,所以这不是答案

最后正确的程式码应该是这样:  

void waitForSignal () {            Object obj = new Object();            synchronized (obj) {                try {                    obj.wait();                } catch (InterruptedException e) {                    e.printStackTrace();                }                obj.notify();            }        }

总结:

第一,记住wait必须要进行异常捕获
第二,记住调用wait或者notify方法必须采用当前锁调用,即必须采用synchronized中的对象

转载于:https://www.cnblogs.com/itboys/p/6201942.html

你可能感兴趣的文章
Flatten Binary Tree to Linked List
查看>>
Edit Distance
查看>>
软件工程第一次作业补充
查看>>
N76E003---输入捕获
查看>>
poj 1094 Sorting It All Out(拓扑排序)
查看>>
acdream B - 郭式树 (水题 卡cin,cout, 卡LL)
查看>>
BMP图像格式
查看>>
python的匿名函数lambda解释及用法
查看>>
c#遍历Dictionary使用KeyValuePair
查看>>
defineProperties属性的运用==数据绑定
查看>>
关于 IOS 发布的点点滴滴记录(一)
查看>>
《EMCAScript6入门》读书笔记——14.Promise对象
查看>>
CSS——水平/垂直居中
查看>>
Eclipse连接mysql数据库jdbc下载(图文)
查看>>
Python中Selenium的使用方法
查看>>
三月23日测试Fiddler
查看>>
20171013_数据库新环境后期操作
查看>>
poj 1654 && poj 1675
查看>>
运维派 企业面试题1 监控MySQL主从同步是否异常
查看>>
Docker 版本
查看>>