Java面试篇基础部分-线程的基本方法

news2024/11/15 9:37:28

  线程的基本方法有wait()、notify()、notifyAll()、sleep()、join()、yield()等等,这些方法都是用来控制线程的运行,并且可以实质性的影响到线程的状态变化情况。
在这里插入图片描述

让线程等待的方法:wait()方法

在这里插入图片描述
  调用wait()方法的线程会进入到WAITING状态,只有等到其他线程通知或者线程被中断之后才会返回。但是需要注意的是与sleep()方法不同的是,wait()方法被调用之后,会释放对象所持有的锁,所以wait()方法一般会被用到同步方法或者同步代码块中进行操作。

让线程睡眠的方法:sleep()方法

  调用sleep()方法也可以让线程等待执行,但与wait()方法不同的是,sleep方法不会释放当前资源所占用的资源锁,会导致线程进入到TIMED-WATING状态,而wait()方法会导致当前线程进入到WATING状态,如上图所示。

让线程让出资源的方法:yield()方法

  调用yield()方法会让当前线程释放CPU执行的时间片,与其他线程一起重新开始竞争CPU时间片。在一般的情况下,优先级较高的线程更有可能竞争到CPU的时间片,但是这也不是绝对的,因为有些操作系统是对线程的优先级是不敏感的。

让线程中断执行的方法:interrupt()方法

  interrupt()方法用于向线程发送一个终止通知的信号,会影响该线程内部的一个中断的标识位,这个线程本身并不会因为调用到了interrupt方法而改变状态(阻塞、终止)。状态的具体变化则是需要等待接收到中断标识的程序的最终处理结果来进行判断,对于interrupt()方法需要注意下面的几个核心点

  • 调用interrupt()方法并不会中断一个正在运行的线程,也就是说如果处于Running状态的线程并不会因为被中断了而终止,仅仅改变了内部维护的中断标识位。
 public void interrupt() {
   
        if (this != Thread.currentThread())
            checkAccess();

        synchronized (blockerLock) {
   
            Interruptible b = blocker;
            if (b != null) {
   
                interrupt0();           // Just to set the interrupt flag
                b.interrupt(this)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2150322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构-差分】力扣1589. 所有排列中的最大和

有一个整数数组 nums ,和一个查询数组 requests ,其中 requests[i] [starti, endi] 。第 i 个查询求 nums[starti] nums[starti 1] … nums[endi - 1] nums[endi] 的结果 ,starti 和 endi 数组索引都是 从 0 开始 的。 你可以任意排列…

【Java面向对象二】static的注意事项

文章目录 前言一、关于static的三个注意点总结 前言 记录static的学习注意事项。 一、关于static的三个注意点 1、类方法中可以直接访问类的成员,不可用直接访问实例成员。 2、实例方法中既可以直接访问类成员,也可以直接访问实例成员。 3、实例方法…

105.WEB渗透测试-信息收集-FOFA语法(5)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:104.WEB渗透测试-信息收集-FOFA语法(4) 还有一个能查看信息的地方…

linux下的分布式Minio部署实践

Linux下的分布式Minio部署实践 分布式Minio部署可以将多块硬盘(位于相同机器或者不同机器)组成一个对象存储服务,避免单机环境下硬盘容量不足、单点故障等问题。 1. 简介 在当前的云计算和大数据时代,IT系统通常的设计理念都是…

英伟达Jim Fan预测:未来2~3年机器人将迎来“GPT-3时刻”

在这个科技不断进步的时代,我们终将迎来“与机器人共存”的未来。你认为,未来会是人机和平共处,还是《终结者》式未来? 随着科技发展,这个未来似乎近在咫尺。昨日外媒 The Decoder 发文报道,在最近的一次红…

Jenkins自动化部署后端项目看这篇就够了

本文主要讲解,使用Jenkins自动化部署后端工程。讲解怎么自动化部署前后的分离项目中的后端工程。 前提条件:本地需要Jenkins,如果你不知道怎么安装,可以看我的另外一篇文章。 Jenkins实现自动部署的步骤: 先拉取git…

Jboss 低版本JMX Console未授权

漏洞描述 此漏洞主要是由于JBoss中/jmx-console/HtmlAdaptor路径对外开放,并且没有任何身份验证机制,导致攻击者可以进⼊到 jmx控制台,并在其中执⾏任何功能。 影响范围 Jboss4.x以下 环境搭建 cd vulhub-master/jboss/CVE-2017-7504 d…

力扣题解2414

大家好,欢迎来到无限大的频道。 今日继续给大家带来力扣题解。 题目描述(中等): 最长的字母序连续字符串的长度 ​ ​字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说,字符串 "abcdefghijklm…

linux 最简单配置免密登录

需求:两台服务器互信登录需要拉起对端服务 ip: 192.168.1.133 192.168.1.137 一、配置主机hosts,IP及主机名,两台都需要 二、192.168.1.137服务器,生成密钥 ssh-keygen -t rsa三、追加到文件 ~/.ssh/authorized_key…

分布式中间件-Pika一个高效的分布式缓存组件

文章目录 Pika简介Pika特性Pika解决的问题及应用场景Pika架构之存储引擎部署模式1、主从模式2、分布式集群模式 Pika快速上手1、二进制包方式2、源码编译方式2.1 支持的平台2.2 依赖的库软件2.3 编译过程2.4 启动 Pika2.5 清空已编译的结果2.6 Pika 的开发调试 3、容器化3.1 使…

【2025】儿童疫苗接种预约小程序(源码+文档+解答)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

【C++指南】inline内联函数详解

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 C为什么引入了inline来替代C语言中的宏 inline的基本用法 定义inline函数 inline的优势与…

DAY20信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

2.自动化-网络空间-AsamF 1.去GitHub上下载项目之后使用CMD打开 2.输入命令AsamF_windows_amd64.exe -v生成配置文件 3.AsamF会在~/.config/asamf/目录下生成config.json文件 C:\Users\Acer\.config\asamf 5.根据文档输入命令去查询所需信息(已经没有用了&#x…

C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说,对Linux远程开发支持相对比较好的也就是Clion和VSCode了,这两个其实对于C和C语言开发都很友好,大可不必过于纠结使用那个,至于VS和QtCreator,前者太过重量级了,后者更是不用说,主要用于…

解锁自动化新境界:KeymouseGo,让键盘和鼠标动起来!

文章目录 解锁自动化新境界:KeymouseGo,让键盘和鼠标动起来!背景:为何选择KeymouseGo?KeymouseGo简介安装KeymouseGo简单函数使用应用场景常见问题与解决方案总结 解锁自动化新境界:KeymouseGo,…

ISSTA 2024现场精彩:“杰出论文奖”超半数属于中国学者

ISSTA会议是软件工程领域中最具影响力的国际会议之一,也是中国计算机学会(CCF)推荐的A类会议。 第33届ISSTA会议已于奥地利维也纳圆满结束,这场盛会已经吸引了众多来自学术界和工业界的软件测试专家、研究人员和工程师&#xff0c…

学习C++的第三天!

C对C的函数部分的扩充 封装 #include <iostream> #include <memory.h> #include <stdlib.h> #include <string.h> using namespace std; using datatype int; //封装一个顺序表 class SeqList { private:datatype* ptr; //指向堆区空间的起始…

基于嵌入式的智能物流柜( 触摸屏/0.96寸oled屏)

演示 智能物流柜&#xff08;基础版&#xff09; 智能物流柜&#xff08;升级版&#xff09; 前言 这是本人在大二在学校接的一个简单的实验室项目&#xff0c;之前发布了一个&#xff0c;由于那是在暑假&#xff0c;家里器材有限&#xff0c;代码敲完之后&#xff0c;用面包板…

PyTorch深度学习快速入门教程【土堆】基础知识篇

Juptyer 版本&#xff1a; Python 3.9.19Pytorch 2.4.1 (pytorch0) C:\Users\25694>conda install nb_conda_kernels(pytorch0) C:\Users\25694>jupyter notebook使用conda环境的pytorch&#xff1a; 成功解决python.exe无法找到程序入口 无法定位程序输入点 shifte…

机器学习-深度学习数据集之打架斗殴识别数据集

关于“打架识别数据集”&#xff0c;这是一个专门设计用于训练计算机视觉模型以识别打架、摔倒以及持械行为的数据集。此类数据集对于开发安全监控系统至关重要&#xff0c;可以帮助在公共场所如学校、酒吧或地铁站等地及时发现潜在的暴力事件&#xff0c;从而快速采取行动来防…