Java基础:废弃stop()与线程安全的中断方法
需积分: 1 6 浏览量
更新于2024-08-03
收藏 18KB TXT 举报
"Java基础笔记-8-17"主要涵盖了以下几个核心知识点:
1. 线程停止方法:Java早期提供了`stop()`方法来停止线程,但因其可能导致不可预料的后果,如锁无法释放或数据一致性问题,该方法已被弃用。正确的做法是避免直接使用`stop()`,而是通过异常中断(`interrupt()`)来间接控制线程。
- 异常中断法:通过抛出`InterruptedException`并在捕获时处理,可以终止线程的执行流程,例如在`ThreadStopDemo1`中,主线程在适当时间设置线程的中断标志,然后让其在`try-catch`块中捕获并重新抛出中断异常,从而结束线程。
2. `wait()`与`notify()`方法结合使用:在`ThreadStopDemo2`中,展示了如何在`wait()`方法后终止线程。当线程进入等待状态后,使用`wait()`会释放当前对象的锁。如果主线程再次调用`interrupt()`,则会唤醒正在等待的线程,但由于`wait()`捕获了`InterruptedException`,所以程序会捕获到中断信号,并终止线程。
3. 通过中断标记终止线程:`ThreadStopDemo3`展示了如何在多线程协作中,一个线程通过检查中断标记(`Thread.currentThread().isInterrupted()`)来感知并响应中断。这是一种更灵活且安全的方法,因为它允许线程自行决定何时响应中断,而不是在任何时刻都可能被强行终止。
4. JMM模型与`synchronized`关键字:这部分内容虽然没有直接给出,但可以推测学习中可能会涉及Java内存模型(JMM)和`synchronized`关键字的内存语义。`synchronized`用于控制多个线程对共享资源的访问,保证了在任一时刻只有一个线程能获取到特定的锁,从而避免了竞态条件。JMM定义了线程间共享变量的可见性和内存顺序,这对于理解并发编程和同步机制至关重要。
5. `synchronized`实现原理:深入理解`synchronized`关键字涉及到 monitor(监视器)的概念,以及它如何工作。在Java中,每个对象都有一个内部的monitor,当一个线程获取到某个对象的锁时,它就获得了对该对象及其监视器的控制。当线程释放锁时,其他等待该锁的线程才能继续执行。
总结来说,这一章节着重于Java并发编程的基本概念和实践,包括线程停止的替代方法、内存模型中的`synchronized`和JMM模型的理解,这些都是编写多线程应用程序的基础。理解这些内容对于编写健壮且高效的并发代码至关重要。
2021-03-09 上传
2023-07-11 上传
2024-06-15 上传
2023-10-05 上传
2023-09-19 上传
2023-05-13 上传
2023-06-24 上传
![](https://profile-avatar.csdnimg.cn/608a02c5f12a4175b4bd3aad721aa852_weixin_45804384.jpg!1)
好教员好
- 粉丝: 1206
- 资源: 39
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解