Thread类的常见问题
常见问题 thread
2023-09-27 14:19:38 时间
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中的对象
相关文章
- windows下 composer常见问题及处理
- IOS 编程中引用第三方的方类库的方法及常见问题
- vue 开发中的常见问题
- 62dwr - 常见问题(没有 cookies 的情况下用 DWR)
- 爆g肝整理,web自动化测试常见问题+解决方案,问题看这一篇就够了
- uniapp - 超详细 H5 网站接入国家 “天地图“ 完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度等超多功能(可复制运行示例代码,详细注释及常见问题)
- Airtest框架和Poco框架常见问题
- [转]Vue Treeselect使用常见问题汇总及解决办法
- 论坛常见问题
- 鸿蒙应用上架全攻略(含常见问题)
- 深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
- 《易学C++(第2版)》——1.7 C++学习的常见问题
- 围绕央行系统升级所产生的常见问题
- 应对数据中心常见问题的IT监控策略
- 详解Vuex常见问题、深入理解Vuex
- 软考高级-信息系统管理师之外包常见问题(最新版)
- 【AGC】【云数据库】云数据库常见问题
- Linux环境下MySql5.6安装和常见问题的解决
- PHP 常见问题2