当前位置: 首页 > news >正文

【面经】interrupt()、interrupted()和isInterrupted()的区别与使用

       📝个人主页:五敷有你      

 🔥系列专栏:面经

⛺️稳中求进,晒太阳

interrupt方法

        如果打断线程正在sleep,wait,join会导致被打断的线程抛出InterruptedException,并清除打断标记。如果打断正在运行的线程,则会设置打断标记。park的线程被打断也会被设置打断标记

Interrupted方法

Thread类的静态方法。检测当前线程的中断标记,返回一个boolean并清除中断状态,其连续两次调用的返回结果不一样,因为第二次调用的时候,线程的中断状态已经被清除了,会返回一个false.

isInterrupted()方法

测试线程是否被打断,不会清除中断状态。

演示代码

场景:在sleep时打断

package jvm;import lombok.extern.slf4j.Slf4j;import java.util.logging.Logger;public class TestInterrupt {public static void main(String[] args) throws InterruptedException {MyThread t1=new MyThread();t1.start();Thread.sleep(10000);t1.interrupt();}}
class MyThread extends Thread{@Overridepublic void run() {while (!this.isInterrupted()){try {System.out.println("执行1s");Thread.sleep(1000);} catch (InterruptedException e) {System.out.println("在睡觉的时候被打断了");throw new RuntimeException(e);}}}
}

如上:导致被打断的线程抛出InterruptedException,并清除打断标记。

场景:在正常运行时,打断标记的情况

package jvm;import lombok.extern.slf4j.Slf4j;import java.util.logging.Logger;public class TestInterrupt {public static void main(String[] args) throws InterruptedException {MyThread t1=new MyThread();t1.start();Thread.sleep(10000);t1.interrupt();}}
class MyThread extends Thread {@Overridepublic void run() {while (!this.isInterrupted()) {System.out.println("执行1s");System.out.println("标记" + this.isInterrupted());}}
}

如上:正常运行时被打断是不会被清除标记的。

场景:使用park暂停的线程 打断标记情况

package jvm;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.LockSupport;
import java.util.logging.Logger;public class TestInterrupt {public static void main(String[] args) throws InterruptedException {MyThread t1=new MyThread();t1.start();Thread.sleep(10000);t1.interrupt();}}
class MyThread extends Thread {@Overridepublic void run() {while (!this.isInterrupted()) {LockSupport.park();System.out.println("标记" + this.isInterrupted());}}
}

如上:park被暂停的线程被打断是不会清除标记的。

场景:测试Thread.interrupted静态方法

package jvm;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.LockSupport;
import java.util.logging.Logger;public class TestInterrupt {public static void main(String[] args) throws InterruptedException {MyThread t1=new MyThread();t1.start();Thread.sleep(10000);t1.interrupt();}}
class MyThread extends Thread {@Overridepublic void run() {while (true){boolean interrupted = Thread.interrupted();System.out.println("标记:"+interrupted);if(interrupted){break;}}}
}

相关文章:

【面经】interrupt()、interrupted()和isInterrupted()的区别与使用

📝个人主页:五敷有你 🔥系列专栏:面经 ⛺️稳中求进,晒太阳 interrupt方法 如果打断线程正在sleep,wait,join会导致被打断的线程抛出InterruptedException,并清除打断标记。如…...

了解这些技术:Flutter应用顺利登陆iOS平台的步骤与方法

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…...

经济学 劳动市场 医疗经济学

目录 劳动市场 医疗经济学 劳动市场 自愿交换 劳动力的供给,取决于能够胜任这个工作的人的数量,雇主提供的工资必须要能覆盖他的机会成本,他失去的自由世界和他做其他事情能够挣到钱 派生需求:劳动力的需求,取决于…...

vue + koa + Sequelize + 阿里云部署 + 宝塔:宝塔数据库连接

之前文章已经介绍了宝塔上传前后端代码并部署,不清楚的请看这篇文章: vue koa 阿里云部署 宝塔:宝塔前后端部署 下面是宝塔创建数据库: 我用的 koa Sequelize 连接的数据库,Sequelize 非常适合前端使用&#xf…...

华为昇腾认证考试内容有哪些

华为昇腾认证考试的内容主要包括理论知识和实践操作两部分。 在理论知识部分,考生需要掌握昇腾计算的基础知识,包括昇腾计算平台的架构、性能特点、应用场景等。此外,还需要深入理解昇腾AI框架、算子开发、模型优化等相关技术原理和应用方法…...

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧

一、params 传参 参数是会拼接到url后面的请求 场景规范&#xff1a;url后面的key值<3个参数的时候&#xff0c;使用params 传参 支持的请求方式&#xff1a;get&#xff08;正规的是get方式&#xff09;、post 都行 例如&#xff1a; http://localhost:8080/simpleParam?…...

EFCore通用数据操作类

public class ServiceBase : IServiceBase {protected DbContext Context { get; private set; }public ServiceBase(IEFContext eFContext){Context eFContext.CreateDBContext();}public void Commit(){this.Context.SaveChanges(); // 直接保存就行了}public void Delete&l…...

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstr…...

使用Python实现K近邻算法

K近邻&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种简单而有效的分类和回归算法&#xff0c;它通过比较新样本与训练样本的距离来进行预测。在本文中&#xff0c;我们将使用Python来实现一个基本的K近邻算法&#xff0c;并介绍其原理和实现过程。 什…...

Celery的任务流

Celery的任务流 在之前调用任务的时候只是使用delay()和apply_async()方法。但是有时我们并不想简单的执行单个异步任务&#xff0c;比如说需要将某个异步任务的结果作为另一个异步任务的参数或者需要将多个异步任务并行执行&#xff0c;返回一组返回值&#xff0c;为了实现此…...

使用Arcpy进行数据批处理-批量裁剪

时空大数据使我们面临前所未有的机遇和挑战&#xff0c;尤其在地学、遥感或空间技术等专业领域&#xff0c;无疑是一个全新的时代。 伴随着时空大数据的到来&#xff0c;海量数据的处理是一个所有科研工作者都无法忽视的重要问题。传统的数据&#xff08;主要指空间数据&#x…...

【攻防世界】ics-05

php://filter 伪协议查看源码 preg_replace 函数漏洞 1.获取网页源代码。多点点界面&#xff0c;发现点云平台设备维护中心时&#xff0c;页面发生变化。 /?pageindex 输入什么显示什么&#xff0c;有回显。 用php://filter读取网页源代码 ?pagephp://filter/readconvert.…...

VTK的交互器

VTK中鼠标消息是在交互类型对象&#xff08;interactorstyle&#xff09;中响应&#xff0c;因此通过为交互类型对象&#xff08;interactorstyle&#xff09;添加观察者&#xff08;observer&#xff09;来监听相应的消息&#xff0c;当消息触发时&#xff0c;由命令模式执行相…...

ChatGPT(3.5版本)开放无需注册:算力背后的数据之战悄然打响

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

python项目练习——14.学生管理系统

这个项目可以让用户管理学生的信息&#xff0c;包括学生的姓名、年龄、成绩等&#xff0c;并提供添加、编辑、删除、查询等功能。这个项目涉及到数据库操作、用户界面设计、数据验证等方面的技术。 代码示例&#xff1a; import tkinter as tk # 导入 Tkinter 库 import sqli…...

基于SpringBoot的公益慈善平台

一、项目背景介绍&#xff1a; 基于SpringBoot的公益慈善平台是一款致力于为社会所有人带来便利服务的B/S架构的应用程序。随着网络技术的发展&#xff0c;公益慈善网站已经逐渐成为公益行动的主要信息载体。在这个平台上&#xff0c;主要有管理员、捐赠者和志愿者三种角色&…...

Python网络爬虫(一):HTML/CSS/JavaScript介绍

1 HTML语言 1.1 HTML简介 HTML指的是超文本标记语言:HyperText Markup Language,它不是一门编程语言,而是一种标记语言,即一套标记标签。HTML是纯文本类型的语言,使用HTML编写的网页文件也是标准的文本文件,可以使用任意的文本编辑器例如记事本打开HTML文件,查看并修改H…...

机器学习每周挑战——旅游景点数据分析

数据的截图&#xff0c;数据的说明&#xff1a; # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…...

开发语言漫谈-C语言

个人认为C语言是最伟大的开发语言&#xff08;没有之一&#xff09;。C语言开创了高级语言的新时代。比C更低级的是汇编语言&#xff0c;这个东西就是反人类的玩意。之后的语言或多或少都受C语言的影响。更神奇的是直到现在&#xff0c;C语言还有生命力。C语言的发明人丹尼斯里…...

vue3导入excel并解析excel数据渲染到表格中,纯前端实现。

需求 用户将已有的excel上传到系统&#xff0c;并将excel数据同步到页面的表格中进行二次编辑&#xff0c;由于excel数据不是最终数据&#xff0c;只是批量的一个初始模板&#xff0c;后端不需要存储&#xff0c;所以该功能由前端独立完成。 吐槽 系统中文件上传下载预览三部…...

SpringBoot+Vue的牙科诊所预约平台毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于Spring Boot与Vue框架的牙科诊所预约平台以解决传统医疗预约模式中存在的信息不对称问题和资源分配效率低下问题。随着数字化医疗技术的快…...

家庭网络技术演进:从CES看有线与无线技术的融合与竞争

1. 家庭网络技术演进&#xff1a;从CES看有线与无线的融合与竞争每年一月的拉斯维加斯&#xff0c;CES&#xff08;国际消费电子展&#xff09;都是科技行业的风向标。对于像我这样长期关注网络技术的从业者来说&#xff0c;CES不仅是新产品的秀场&#xff0c;更是观察底层技术…...

从JAR包到原生二进制:我的SpringBoot应用在Linux服务器上‘瘦身’实战记录(GraalVM 22.1.0 + Maven)

从JAR包到原生二进制&#xff1a;我的SpringBoot应用在Linux服务器上‘瘦身’实战记录 去年接手的一个电商促销系统&#xff0c;随着业务增长&#xff0c;JAR包启动时间从最初的8秒延长到23秒。某次大促期间&#xff0c;服务扩容时JVM预热导致的响应延迟直接影响了转化率——这…...

静态前端项目实战:从营销页到现代化门户的架构与实现

1. 项目概述&#xff1a;一个纯粹的静态前端项目最近在GitHub上看到了一个名为“Vibe Code”的项目&#xff0c;它的README写得非常漂亮&#xff0c;充满了各种炫酷的特性介绍&#xff0c;比如支持Claude Code、OpenAI Codex等AI编程助手&#xff0c;还有深色/亮色主题切换、多…...

STM32F103C6/RC + HC-SR04超声波测距:Proteus 8.9仿真避坑与LCD1602显示实战

STM32F103C6/RC HC-SR04超声波测距&#xff1a;Proteus 8.9仿真避坑与LCD1602显示实战 在嵌入式开发的学习过程中&#xff0c;仿真工具为我们提供了极大的便利&#xff0c;尤其是对于资源有限或硬件条件不足的开发者来说&#xff0c;Proteus仿真软件无疑是一把利器。然而&…...

大模型令牌管理工具tokscale:统一计数与成本估算的插件化实践

1. 项目概述&#xff1a;一个面向现代开发者的轻量级令牌管理工具 最近在折腾一些需要处理大量文本数据的项目&#xff0c;比如自动化文档摘要、代码生成或者API调用&#xff0c;一个绕不开的问题就是“令牌”&#xff08;Token&#xff09;的管理。无论是使用OpenAI的GPT系列模…...

GKD订阅管理实战手册:一站式解决Android自动化规则配置难题

GKD订阅管理实战手册&#xff1a;一站式解决Android自动化规则配置难题 【免费下载链接】GKD_THS_List GKD第三方订阅收录名单 项目地址: https://gitcode.com/gh_mirrors/gk/GKD_THS_List GKD订阅管理是Android自动化工具GKD的第三方订阅收录平台&#xff0c;为GKD用户…...

基于reflectt-node的WebSocket RPC实践:构建实时协作待办应用

1. 项目概述与核心价值 最近在折腾一个需要实时双向通信的Web应用&#xff0c;传统的轮询和长轮询方案在性能和资源消耗上总感觉差那么点意思。后来把目光投向了WebSocket&#xff0c;但原生WebSocket的API相对底层&#xff0c;自己管理连接、心跳、重连、消息序列化这些琐事&a…...

3步解决JavaScript精度问题:decimal.js高精度计算完整指南

3步解决JavaScript精度问题&#xff1a;decimal.js高精度计算完整指南 【免费下载链接】decimal.js An arbitrary-precision Decimal type for JavaScript 项目地址: https://gitcode.com/gh_mirrors/de/decimal.js 在JavaScript开发中&#xff0c;你是否经常遇到这样的…...

5个关键步骤掌握PyAEDT:从安装到高级仿真实战指南

5个关键步骤掌握PyAEDT&#xff1a;从安装到高级仿真实战指南 【免费下载链接】pyaedt AEDT Python Client Package 项目地址: https://gitcode.com/gh_mirrors/py/pyaedt PyAEDT作为Ansys Electronics Desktop的Python客户端库&#xff0c;为工程师提供了强大的电子设计…...