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

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

  线程的基本方法有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.kler.cn/news/312167.html

相关文章:

  • 蓝桥杯-STM32G431RBT6(解决LCD与LED引脚冲突的问题)
  • 大数据时代:历史、发展与未来
  • 王道408考研数据结构-绪论
  • linux-软件包管理-软件源配置
  • Centos 7 搭建Samba
  • 初识Linux · 环境变量
  • VSCode开发ros程序无法智能提示的解决方法(二)
  • 亲测openEuler 22.03 LTS 安装MySQL 5.7和注意事项
  • Spring 源码解读:实现自定义注解处理器
  • Linux文件IO(二)-文件操作使用详解
  • 论文解读《COMMA: Co-articulated Multi-Modal Learning》
  • mysql 重置密码
  • 部署Prometheus+Grafana批量监控Linux服务器
  • Django框架全面指南
  • 如何解决“json schema validation error ”错误? -- HarmonyOS自学6
  • 鸿蒙环境服务端签名直传文件到OSS
  • HTTP协议详解以及常见的状态码
  • 设计模式之外观设计模式
  • Ubuntu24.04部署docker
  • VD2811A SOP-8封装 可直接替代XB8886G芯片 大电流充放电锂保芯片
  • 智能机巢+无人机:自动化巡检技术详解
  • qt char*与QString互转
  • 巧用联合与枚举:解锁自定义类型的无限潜力
  • 【深度学习|PyTorch】基于 PyTorch 搭建 U-Net 深度学习语义分割模型——附代码及其解释!
  • 【HTTP】方法(method)以及 GET 和 POST 的区别
  • 控制浏览器显示隐藏c++
  • MySQL 主从复制部署与优化
  • 部署k8s基础环境
  • Java Web实战:利用三层架构与Servlet构建登录注册模块
  • 828华为云征文 | 云服务器Flexus X实例:部署 AgentOps,全方位监测智能体