yield java_yield在java中的使用
在我们对线程恢复其运行时,需要使用yield做一个就绪的准备,给线程的切换提供一个缓冲。我们可以把yield看成一个通知线程的工具,在程序运行前为其准备足够的内存。下面我们就yield概念、使用注意进行介绍,然后带来实例代码的分享,一起看看怎么用yield吧。
1.概念
yield执行后线程进入就绪状态。通知调度器,主动让出对cpu的占用,让别的线程执行,但是不一定能够保证别的同样优先级的线程能够执行。线程会从运行态切换到就绪态,但是也有可能马上从就绪态又切换到运行状态。
2.使用注意
(1)yield是一个静态的本地方法(native)
(2)调用yield后,yield告诉当前线程把运行机会交给线程池中有相同优先级的线程。
(3)yield不能保证,当前线程迅速从运行状态切换到就绪状态。
(4)yield只能是将当前线程从运行状态转换到就绪状态,而不能是等待或者阻塞状态。
3.实例//yield放弃CPU时间片
public static void yieldTest(){
//定义一个线程
Thread thread = new Thread(() -> {
System.out.println(Thread.currentThread().getName() + ": 测试线程开始执行。。。");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": 测试线程执行结束了。");
});
thread.start();
System.out.println(Thread.currentThread().getName() + ": 执行yield方法");
Thread.yield();
System.out.println(Thread.currentThread().getName() + ": 主线程开始执行");
}
打印结果:main: 执行yield方法
main: 主线程开始执行
Thread-0: 测试线程开始执行。。。
Thread-0: 测试线程执行结束了。
以上就是yield在java中的使用,可以说它为程序的运行状态切换提供了环境的支持。当我们想把线程切换之前,就可以使用yield方法进入就绪状态。
yield java_yield在java中的使用相关推荐
- 可惜Java中没有yield return
项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...
- 关于java中线程yield()方法问题
关于java中线程yield()方法问题 问题一: 我知道yield是用来休眠当前线程,但我查看了资料,又说其不会释放锁,所以我就不解了,其明明会将cpu资源给其他线程,那它不释放锁,其他线程有怎么获 ...
- JAVA中的多线程(八):线程的优先级和yield方法
JAVA中的多线程(八):线程的优先级和yield方法 优先级代表着抢资源的频率 所有线程默认优先级是5 yield()临时释放线程的执行权 1 class Demo implements Runna ...
- java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法
Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...
- java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...
一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...
- Java中的多线程你只要看这一篇就够了
如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个话其 ...
- java包装类和基本类型谁先谁后_你知道Java中基本类型和包装类的区别吗
前情提要 上一篇中,通过一道常见的面试题(即:String.StringBuilder.StringBuffer的区别),引申到Java中基本类型和包装类的相关内容.在这一篇中,我们将解决上一篇中引申 ...
- 面试:说说Java中的 volatile 关键词?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | Matrix海子 来源 | https://w ...
- java中我爱你_Java线程学习(转)
编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:s ...
最新文章
- python检查目录是否存在,如果不存在则创建
- php imagemagick 漏洞,ImageMagick漏洞EXP简易生成脚本
- 使用Datastax Java驱动程序与Cassandra进行交互
- Python基础教程之第3章 使用字符串
- 数据 正则化 python_python3.6怎么单独正则化/标准化DataFrame中的指定列数据
- Redis工作笔记-Set类型
- Perl 第三章 操作符
- 【Elasticsearch】基于儿童积木玩具图解 Elasticsearch 聚合
- 听听优秀的人讲 AI!带你探知目标检测以及分割的现状和挑战
- 吴晓慧讲述:“随手记安全吗”网贷平台“出清”利好行业发展
- linux搭建dlna媒体服务器,Serviio:一款功能强大的DLNA媒体服务器软件
- RxJava操作符(09-算术/聚合操作连接操作)
- layui菜鸟教程--乐字节前端
- 一位Rust中年低颅压头疼患者的自救之路
- SQL反模式:实体-属性-值(EAV)问题(一)
- 关于独立DFS和域DFS板书
- UCI机器学习数据库使用说明
- php imap 库_php imap_open 实例教程
- 【Spring Boot】使用mockMvc模拟请求以及遇到的问题
- 模块化-CMJESM
热门文章
- 戴尔电脑无法自动修复此计算机,戴尔win10无限自动修复重置电脑时出现问题 你做对了吗?...
- 面临重重困难,iPhone出货量依然增长显示出强大竞争力
- 鸿蒙系统同心联盟UOS百科,困难重重,华为依然积极发展自主操作系统,同时布局鸿蒙和UOS...
- JSD-2204-面向对象-接口-潜艇游戏--Day14
- Python中Pip的安装操作
- 《God of War 3 / 战神3》图文攻略
- 【转贴】何人不起故园情
- SQL计算机名访问数据库失败-找不到网络路径
- HTPC知识普及讲座之六 全套设备的组建1
- 关键词词库制作-搜索词分析工具