小工具      在线工具  汉语词典  css  js  c++  java

简介

本节我们讲下Thread.yield()方法的作用,并对比下sleep()方法,看看二者有何区别。

一.Thread.yield()方法的作用

功能:请求释放CPU时间片。锁不会被释放,线程仍处于RUNNABLE状态。

1.yield()方法详解

①.yield()方法只是提出申请释放CPU资源,至于能否成功释放由JVM决定。

由于这个特性,一般编程中用不到此方法,但在很多并发工具包中,yield()方法被使用,如AQSConcurrentHashMapFutureTask等。

②.调用了yield()方法后,线程依然处于RUNNABLE状态,线程不会进入堵塞状态。

什么是堵塞状态

线程状态有BLOCKED或WAITING或TIME_WAITING,统称为阻塞状态。

关于线程状态,详见文章《Java线程状态完全分析教程》,我在这篇文章里有详细解析和代码示例,这里不在赘述。

③.调用了yield()方法后,线程处于RUNNABLE状态时,线程就保留了随时被调度的权利。

二.yield()方法和sleep()方法有什么区别

yield()方法调用后线程处于RUNNABLE状态,而sleep()方法调用后线程处于TIME_WAITING状态,所以yield()方法调用后线程只是暂时的将调度权让给别人,但立刻可以回到竞争线程锁的状态;而sleep()方法调用后线程处于阻塞状态。

关于sleep()方法的更多讲解,详见《Java中sleep()方法和wait()方法的异同》

总结

本文介绍了yield()方法的作用,分析了调用yield()方法后其线程状态代表的含义,以及与sleep()方法做了对比,希望本文能帮到你。

. . .

相关推荐

额外说明

Windows安装postgresql数据库图文教程

数据库使用排行榜:https://db-engines.com/en/ranking 目录 一、软件简介 二、软件下载 三、安装教程 四、启动教程 一、软件简介 PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS)

额外说明

编译并链接

首先,我们可以将所有东西都放在一个.cpp文件内.然后编译器就将这个.cpp编译成.obj,obj是什么东西?就是编译单元了.一个程序,可以由一个编译单元组成,也可以有多个编译单元组成. 假如你不想让你的源代码变得很难阅读的话,就请使用多个编译单元吧.(

额外说明

leetcode27(课程:拓扑排序)

你这个学期必须选修 numCourse 门课程,记为 0 到 numCourse-1 。 在选修某些课程之前需要一些先修课程。 例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们:[0,1] 给定课程总量以及它们的先决条件,请你判

额外说明

Leetcode动态规划(0-1背包问题的一维和二维dp实现)

-专栏:每日算法学习 -个人主页:个人主页 目录 1.前提:什么是0-1背包 2.实现:二维dp讲解 3.实现:一维dp讲解(滚动数组) 1.前提:什么是0-1背包 -情况描述:有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i

额外说明

Python库【数据处理、机器学习、大数据、文件处理等14个类的所有python库整理】

 吐血整理一个月——终于把所有Python库整理齐了....._小熊猫爱恰饭的博客-CSDN博客 参考链接:   一、数据处理  #python学习资料群:660193417 ##3 Chardet # 字符编码探测器,可以自动检测文本、网页、xml的

额外说明

netty-codec-mqtt 简介、中文文档、中英对照文档 下载

netty-codec-mqtt 文档 下载链接(含jar包、源码、pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 netty-codec-mqtt-4.1.73.Final.jar netty-codec-mqtt-4.1.73.F

额外说明

Java讲课笔记23:Map接口及其实现类

文章目录 零、本讲学习目标 一、Map接口 1、Map接口概述 2、Map接口主要实现类 (1)HashMap集合 (2)TreeMap集合 (3)HashTable集合 3、Map接口常用方法 二、HashMap集合 1、HashMap集合定义 2、H

额外说明

【计算机网络原理】第 1 章:计算机网络概述

章节目录 一、计算机网络基本概念 1.1 计算机网络的定义 ① 计算机网络是互连的、自治的计算机的集合       互连:利用通信链路连接相互独立的计算机系统。       自治:计算机系统彼此独立,不存在主从或者控制与被控制的关系。 ② 计算机网络的起

额外说明

【LeetCode】《不同路径》的解题思考过程

一、题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? 二、解决办法 从

ads via 小工具