`
vyloy
  • 浏览: 78688 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

Thread.yield 和 Thread.sleep 是没有任何同步语义的

    博客分类:
  • Java
阅读更多
http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html 17.3
引用

Thread.sleep causes the currently executing thread to sleep (temporarily cease execution) for the specified duration, subject to the precision and accuracy of system timers and schedulers. The thread does not lose ownership of any monitors, and resumption of execution will depend on scheduling and the availability of processors on which to execute the thread.

It is important to note that neither Thread.sleep nor Thread.yield have any synchronization semantics. In particular, the compiler does not have to flush writes cached in registers out to shared memory before a call to Thread.sleep or Thread.yield, nor does the compiler have to reload values cached in registers after a call to Thread.sleep or Thread.yield.


引用

For example, in the following (broken) code fragment, assume that this.done is a non-volatile boolean field:

引用

while (!this.done)
    Thread.sleep(1000);

The compiler is free to read the field this.done just once, and reuse the cached value in each execution of the loop. This would mean that the loop would never terminate, even if another thread changed the value of this.done.


作者:翁志艺
分享到:
评论

相关推荐

    C#中Task.Yield的用途深入讲解

    主要给大家介绍了关于C#中Task.Yield的用途的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    sleep()、wait()、yield()和join()方法特点及区别.docx

    4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。(如果不是在同步方法或同步代码块中调用wait()方法,则抛出IllegalMOnitorStateException,它是RuntimeException的一个子类,因此,不需要try-...

    java核心知识点整理.pdf

    25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 ......................

    多线程sleep,yield,wait区别

    NULL 博文链接:https://coolfire9201207034819.iteye.com/blog/1660744

    JAVA核心知识点整理(有效)

    25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 ......................

    T03-Sleep-Yield-Join.java

    T03_Sleep_Yield_Join.java

    java中yieldsleep以及wait的区别.pdf

    java中yieldsleep以及wait的区别.pdf

    JAVA程序设计教程

    第一章程序和程序设计 .......................................................................................................1 §1.1 什么是程序 ?........................................................

    (多线程)leetcode1115. 交替打印FooBar 记得Thread.yield();

    我们提供一个类: class FooBar {  public void foo() {  for (int i = 0; i < n; i++) {  print(“foo”);  } ... public void bar() { ...其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法...

    Java高级程序设计测试含答案.docx

    () [单选题] * A.wait()(正确答案) B.sleep() C.yield() D.currentThread() 下面关于线程优先级的说法中,正确的是() [单选题] * A.线程的优先级是不能改变的 B.线程的优先级是在创建线程时设置的 C.在...

    erdos.yield:clojure中的惰性序列发生器

    erdos.yield:clojure中的惰性序列发生器

    Java线程中wait,await,sleep,yield,join用法总结.pdf

    Java线程中wait、await、sleep、yield、join用法汇总,文章里面总结了这些关键字的用法,并且里面带有源码帮助分析用法,此一文就可以理解这些关键字用法,推荐拥有

    yield表达式.pdf

    讲解Python的yield表达式,因为这个关键字平常不常用,也容易产生歧义,不易 理解;所以这里把它单独拿出来讲解,它与return的区别,它和生成器的关系,它的通常用法。

    event_processor.rar_event

    No thread support available.Yield our process time to another thread.

    JAVA高级程序设计测试题含答案.docx

    yield() D. currentThread() 第9题 【单选题】【2.00分】【概念理解】 下面关于线程优先级的说法中,正确的是 [单选题] * A. 线程的优先级是不能改变的 B. 线程的优先级是在创建线程时设置的 C. 在创建线程后的任何...

    java多线程机制 -- 源码详解

    circleThread.sleep(1000); } catch(InterruptedException e){} } } public void paint(Graphics g) { double i=Math.random(); if(i) g.setColor(Color.red); else g.setColor(Color.blue...

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法、yield()方法、join方法、interrupt()方法

    线程的基本概念、线程类、任务类、线程优先级、sleep()方法(休眠)、yield()方法(礼让)、join方法(合并)、interrupt()方法(中断),线程的生命周期 线程 与 进程 的关系:**有一个进程中至少包含一个线程 **...

    C# WPf经典教程包含有14个文件

    • System.Windows.Threading.DispatcherObject类:WPF 中的大多数对象是从 DispatcherObject 派生的,这提供了用于处理并发和线程的基本构造。WPF 基于调度程序实现的消息系统。 • System.Windows....

    举例详解Python中yield生成器的用法

    yield是生成的意思,但是在python中则是作为生成器理解,生成器的用处主要可以迭代,这样简化了很多运算模型(还不是很了解是如何简化的)。 yield是一个表达式,是有返回值的. 当一个函数中含有yield时,它不再是一个...

Global site tag (gtag.js) - Google Analytics