java中什么是Yield给出一个例子

马克-to-win:yield英文是屈服投降的意思。 (视频下载) (全部书籍)当前线程投降就是当前线程希望释放CPU的自己的占用权,( 但系统可以忽略它这个请求。)参见: https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#yield%28%29 其中有这么句话: A hint to the scheduler that the current thread is willing to yield its current use of a processor. The scheduler is free to ignore this hint.这样的话当前线程yield时,有时虽然它自己想让别的线程执行,但系统出于优化考虑,可能还是会让当前的线程继续执行。这样的话,yield就会有一种不可控的效果,所以并行编程的最佳实践建议少用yield。

例:1.5.5-本章源码

class ThreadMark_to_win extends Thread {
    private String s;
    public ThreadMark_to_win(String s) {
        this.s = s;
    }
    public void run() {
        for (int i = 0; i < 10; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
            System.out.println(s);
/*当前线程希望释放CPU的自己的占用权,( 但系统可以忽略。) */           
            Thread.yield();
        }
    }

。。。。。。。。。。。。。。。。。
详情请进:http://www.mark-to-win.com/index.html?content=JavaBeginner/javaUrl.html&chapter=JavaBeginner/JavaBeginner6_web.html#Yield

原文地址:https://www.cnblogs.com/mark-to-win/p/9696164.html

时间: 2024-10-07 12:02:31

java中什么是Yield给出一个例子的相关文章

gridview中的单元格弹出一个窗口

网格中的单元格弹出一个窗口 $(document).ready(function(){ var s=$('#grdTest_Div'); var tr=$('#grdTest_Div').children().children().children().children(); var grid = document.all.grdTest; tr.each(function(i,j){ if(i!=0&&i!=tr.length) { $('td',j).eq(3).click(funct

【Java基础】Java中的char是否可以存储一个中文字符之理解字符字节以及编码集

Java中的一个char采用的是Unicode编码集,占用两个字节,而一个中文字符也是两个字节,因此Java中的char是可以表示一个中文字符的. 但是在C/C++中由于采用的字符编码集是ASCII,只有一个字节,因此是没办法表示一个中文字符的. 解答了上面的浅显易懂的问题之后,下面彻底理清楚字符 字节以及编码的原理. 其实关于编码以及字节的问题,在腾讯实习生一面的时候也问到过,当时搞不懂面试官为什么会问这个问题,现在想想,这个问题还是很考验一个人的思考以及钻研深度的,而且这个问题远远比自己想象

iOS 中 #error宏 的使用的一个例子

头文件中如下定义宏: /** * @brief 默认空间名(必填项) */ #error 必填项 #define DEFAULT_BUCKET @"" /** * @brief 默认表单API功能密钥 (必填项) */ #error 必填项 #define DEFAULT_PASSCODE @"" 类的实现中使用: self.bucket = DEFAULT_BUCKET; self.passcode = DEFAULT_PASSCODE; 这样,如果没有初始化这两

java中线程优先级是怎么回事给出一个例子

j6.线程优先级 (视频下载) (全部书籍) java中线程的优先级用1-10之间的数字表示,数值越大优先级越高,默认的优先级为5.Java中的线程优先级是在Thread类中定义的常量 NORM_PRIORITY : 值为5,MAX_PRIORITY :值为10,MIN_PRIORITY : 值为1,缺省优先级为 NORM_PRIORITY.有关优先级的常用方法有两个:1)final void setPriority(int newp) : 修改线程的当前优先级  2)final int get

java中什么是线程不安全给出一个例子

下面我们再给出一个线程不安全的例子. (视频下载) (全部书籍) 例:1.8.2-本章源码 class BookMark_to_win {    int bookNum=10;    void onlySellOne() {        if (bookNum > 0) {            System.out.println(Thread.currentThread().getName()                    + " before" + bookNum

Java中线程的yield(),sleep()以及wait()的区别

从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务. 但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield.或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep. sleep方法不推荐使用,可用wait.线程退出最好自己实现,在运行状态中一直检验一个状态,如果这个状态为真,就一直运行,如果外界更改了这个状态变量,那么线程就停止运行. sleep()使

java中什么是线程安全给出一个例子

8.线程安全 什么是线程安全? 马克-to-win: (视频下载) (全部书籍)最大的大白话,你的代码一个线程执行挺好,一上多线程测试就玩儿完(结果不是你所想要的),这就是线程不安全.反之为线程安全.首先,我们把第二章讲单态模式或单例模式(Singleton)的例子再搬过来一次,但这里把一些无关的打印和注释去掉了: 例:1.8.1-本章源码class Photoshop {    private Photoshop() {    }    private static Photoshop pho

JAVA中sleep,wait,yield,join函数解析_ftc

线程退出最好自己实现,在运行状态中一直检验一个状态,如果这个状态为真,就一直运行,如果外界更改了这个状态变量,那么线程就停止运行. _____________________________________________________________________________________________________________________________________________________________________ 1.sleep()方法 在指定时间内

Java中sleep,wait,yield,join的区别

sleep() wait() yield() join()用法与区别 1.sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”.不推荐使用. sleep()使当前线程进入阻塞状态,在指定时间内不会执行. 2.wait()方法 在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待.线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁. 当前线程必须拥有当前对象锁.如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStat