Thread.sleep() 和 Thread.yield() 区别

1. Thread.yield():

api中解释: 暂停当前正在执行的线程对象,并执行其他线程。

注意:这里的其他也包含当前线程,所以会出现以下结果。

  1. public class Test extends Thread {
  2. public static void main(String[] args) {
  3. for (int i = 1; i <= 2; i++) {
  4. new Test().start();
  5. }
  6. }
  7. public void run() {
  8. System.out.print("1");
  9. yield();
  10. System.out.print("2");
  11. }
  12. }

输出结果: 1122 或者 1212

2. Thread.sleep(long millis):

解释:使当前线程暂停millis所指定的毫秒,转到执行其它线程。

时间: 2024-12-28 17:18:19

Thread.sleep() 和 Thread.yield() 区别的相关文章

Thread.currentThread()与this的区别

Thread.currentThread()与this的区别: 1.Thread.currentThread().getName()方法返回的是对当前正在执行的线程对象的引用,this代表的是当前调用它所在函数所属的对象的引用. 2.使用范围: Thread.currentThread().getName()在两种实现线程的方式中都可以用.   this.getName()只能在继承方式中使用.因为在Thread子类中用this,this代表的是线程对象.   如果你在Runnable实现类中用

Thread.sleep( ) vs Thread.yield( )

Thread.sleep() The current thread changes state from Running to Waiting/Blocked as shown in the diagram below. Any other thread with reference to the thread currently sleeping (say t) can interrupt it calling t.interrupt() the call to sleep has to be

java中的线程问题(三)——继承Thread VS 实现Runnable的区别

从java的设计来看,通过继承Thread或者实现Runnable接口来创建线程本质上没有区别,从jdk帮助文档我们可以看到Thread类本身就实现了Runnable接口,如果一定要说它们有什么区别,总结几点:     用实现Runnable接口的特点 1.用实现Runnable接口的方法创建对象可以避免java单继承机制带来的局限: 2.用实现Runnable接口的方法,可以实现多个线程共享同一段代码(数据): 因此建议大家如果你的程序有同步逻辑需求,则使用Runnable的方法来创建线程.

操作系统基础知识之————单线程(Thread)与多线程的区别

单线程(Thread)与多线程的区别 (一)首先了解一下cpu: 随着主频(cpu内核工作时钟频率,表示在CPU内数字脉冲信号震荡的速度,等于外频(系统基本时间)乘倍频)的不断攀升,X86构架的硬件逐渐成为瓶颈,最高为4G,事实上目前3.6G主频的CPU已经接近顶峰. 多线程编程的目的,就是"最大限度地利用CPU资源",当某一线程的处理不需要占用 CPU 而只和 I/O , OEM BIOS 等资源打交道时,让需要占用 CPU 资源的其它线程有机会获得CPU资源. 每个程序执行时都会产

JAVA基础(多线程Thread和Runnable的使用区别(转载)

转自:http://jinguo.iteye.com/blog/286772 Runnable是Thread的接口,在大多数情况下“推荐用接口的方式”生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承. 在使用Thread的时候只需要new一个实例出来,调用start()方法即可以启动一个线程. Thread Test = new Thread(); Test.start(); 在使用Runnable的时候需要先new一个继承Runnable的实例,之后用子类T

thread run 和 start 的区别

run 方法 也可以调用线程启动   但是单线程(为顺序执行) 而start方法 启动的线程为多个线程之间争夺cpu的执行权(为随机的) 摘录于http://www.cnblogs.com/sunflower627/p/4816821.html Java的线程是通过java.lang.Thread类来实现的.VM启动时会有一个由主方法所定义的线程.可以通过创建Thread的实例来创建新的线程.每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体.

Thread 守护线程 Thread.setDaemon详解

java中线程分为两种类型:用户线程和守护线程.通过Thread.setDaemon(false)设置为用户线程:通过Thread.setDaemon(true)设置为守护线程.如果不设置次属性,默认为用户线程. 用户线程和守护线程的区别: 1. 主线程结束后用户线程还会继续运行,JVM存活:主线程结束后守护线程和JVM的状态又下面第2条确定. 2.如果没有用户线程,都是守护线程,那么JVM结束(随之而来的是所有的一切烟消云散,包括所有的守护线程). 补充说明: 定义:守护线程--也称“服务线程

PHP版本Non Thread Safe和Thread Safe如何选择?区别是什么?

PHP版本分为Non Thread Safe和Thread Safe,Non Thread Safe是指非线程安全,Thread Safe是指线程安全,区别是什么?如何选择? Non Thread Safe和Thread Safe的区别 Non Thread Safe和Thread Safe ● Non Thread Safe:非线程安全,非线程安全是与IIS搭配的环境: ● Thread Safe:线程安全,线程安全是与Apache搭配的环境. 如果你的使用的是IIS服务器,就选择Non Th

java 继承Thread和实现Runnable的区别

1.class MyThread extends Thread{ private int a; public void run(){ for( ; a < 100; a++  ){ System.out.println(getName() + " " + a); } } public static void main(String [ ] args){ MyThread  one = new MyThread(); MyThread  two =  new MyThread();