Java 线程四种停止方式代码实例 Java 线程(Thread)是一种基本的编程单元,它可以并发执行多个任务,提高程序的执行效率和响应速度。然而,在某些情况下,我们需要停止线程的执行,以避免资源的浪费和程序的崩溃。接下来,我们将介绍 Java 线程四种停止方式代码实例。 1. 正常的程序启动和停止 在 Java 中,我们可以通过使用标记变量来停止线程。例如: ```java public class ThreadCease extends Thread { private volatile boolean exit = false; public void run() { while (!exit) { // 停止后做的事情~ } } } ``` 在上面的代码中,我们使用了一个 volatile 变量 `exit` 来标记线程是否需要停止。当 `exit` 变量被设置为 `true` 时,线程将停止执行。 2. 使用退出标记 在某些情况下,我们需要在线程中使用退出标记来停止线程。例如: ```java public class ThreadCease extends Thread { private volatile boolean exit = false; public void run() { while (!exit) { // 停止后做的事情~ } } } ``` 在上面的代码中,我们使用了一个 volatile 变量 `exit` 来标记线程是否需要停止。当 `exit` 变量被设置为 `true` 时,线程将停止执行。 3. 使用线程的 isInterrupted() 方法 Java 线程提供了一个 `isInterrupted()` 方法来检查线程是否被中断。例如: ```java public class ThreadCease1 extends Thread { public void run() { while (!isInterrupted()) { try { Thread.sleep(3000); } catch (Exception e) { e.printStackTrace(); break; } } } } ``` 在上面的代码中,我们使用了 `isInterrupted()` 方法来检查线程是否被中断。当线程被中断时,我们可以通过捕获 `InterruptedException` 异常来结束线程。 3.1.1 线程处于阻塞状态 当线程处于阻塞状态时,例如使用 `sleep()`、同步锁 `wait()`、socket 的 receiver、accept 方法时,会使线程进入到阻塞状态。当程序调用 `interrupt()` 方法时,会抛出 `InterruptedException` 异常。捕获该异常,然后 break 跳出循环,从而结束该线程。 3.1.2 线程未处于阻塞状态 当线程未处于阻塞状态时,调用 `interrupt()` 方法时,实际上是通过判断线程的中断标记来退出循环。 4. stop() 方法停止 Java 提供了一个 `stop()` 方法来停止线程的执行,但是这种方法非常危险,不建议使用。例如: ```java public class ThreadCease2 extends Thread { public void run() { // ... Thread.stop(); // 不建议使用 } } ``` 使用 `stop()` 方法停止线程的原因主要有两个: * 在程序调用 `Thread.stop()` 后会抛出 `ThreadDeath` 错误。 * 并释放子线程所持有的所有锁,会导致被保护数据呈现不一致性,此过程不可控。 Java 提供了四种停止线程的方式:使用退出标记、使用线程的 `isInterrupted()` 方法、使用 `stop()` 方法停止(不建议使用)。在实际开发中,我们需要根据具体情况选择合适的停止方式,避免资源的浪费和程序的崩溃。
- 粉丝: 10
- 资源: 978
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java项目,课程设计-#-ssm-mysql-数据结构课堂考勤管理系统.zip
- 汽车起动机市场:2023年我国起动机的市场规模已高达480亿元人民币
- java项目,课程设计-#-ssm-mysql-商品信息分类管理系统.zip
- DataGuard容灾配置过程-for-Oracle11gR2
- HPSocket.Net库文件以及使用说明
- express 基础框架搭建
- Oracle DataGuard 安装配置详解:从主备环境搭建到故障切换
- 前端封装video.js、对接海康插件npm包
- 2024年下半年网络工程师案例分析真题答案解析-网络设计与故障排除
- 打印机清零 爱普生XP-4105 系列清零 清除提示无边框不能打印 亲测可用
- 1
- 2
前往页