美文网首页
16,线程3-Yield方法

16,线程3-Yield方法

作者: 旅程中 | 来源:发表于2018-10-12 13:48 被阅读7次

使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了。

Java线程中有一个Thread.yield( )方法,很多人翻译成线程让步。顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行。

public class YieldTest extends Thread {  

    public YieldTest(String name) {  

        super(name);  

    }  

    @Override  

    public void run() {  

        for (int i = 1; i <= 50; i++) {  

            System.out.println("" + this.getName() + "-----" + i);  

            // 当i为30时,该线程就会把CPU时间让掉,让其他或者自己的线程执行(也就是谁先抢到谁执行)

            if (i == 30) {  

                this.yield();  

            }  

        }  

    }  

    public static void main(String[] args) {  

        YieldTest yt1 = new YieldTest("张三");  

        YieldTest yt2 = new YieldTest("李四");  

        yt1.start();  

        yt2.start();  

    }  

}  

第一种情况:李四(线程)当执行到30时会CPU时间让掉,这时张三(线程)抢到CPU时间并执行。

image.png

第二种情况:李四(线程)当执行到30时会CPU时间让掉,这时李四(线程)抢到CPU时间并执行。

image.png

相关文章

  • 16,线程3-Yield方法

    使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚...

  • 移远QuecPython(基于EC600s)开发物联网应用(六)

    一. _thread - 多线程 _thread 模块提供创建新线程的方法,并提供互斥锁, 线程最多16个 方法描...

  • java程序问题解决

    cpu过高如何定位? 方法一: 首先找到进程ip 根据进程id找到进程内占用过高的线程 线程id转换成16进制因为...

  • java多线程基础

    多线程 线程,进程,多线程 一、java线程 1. 线程状态 2. 线程方法 方法说明setPriority(in...

  • GCD

    多线程 NSTheard :alloc init 方法创建线程 。 start 方法启动线程 。然后系统会管理线程...

  • Java程序员福利——阿里架构师详解Java多线程常用方法的使用

    前言 Java多线程的常用方法基本分为:获取当前线程的操作,线程休眠sleep()方法,线程让步yield()方法...

  • 多线程 - NSThread

    创建和启动线程简单说明 1.创建,启动线程 1.1创建线程(3中方法) 方法1: 方法2: 方法3: 线程参数设置...

  • 1 多线程基础和Sync

    目录 进程、线程概念 创建线程的方法 线程常用方法 线程同步:Sync 1 进程线程概念 1.1 进程 进程指的是...

  • Java基础之线程

    一、线程分类 二、线程的实现方式 三、线程的状态 四、线程的核心方法 sleep()方法:该方法属于Thread类...

  • Java线程join()

    join 方法是一个阻塞方法,用来进行线程之间的交流。线程 A 调用 线程 B 的 join 方法,则线程 A 将...

网友评论

      本文标题:16,线程3-Yield方法

      本文链接:https://www.haomeiwen.com/subject/txxgaftx.html