Java 多线程 sleep()方法与yield()方法的区别

  sleep()方法与yield()方法的区别如下:

  1 是否考虑线程的优先级不同

  sleep()方法给其他线程运行机会时不考虑线程的优先级,也就是说,它会给低优先级的线程运行的机会。而yield()方法只会给相同优先级或更高优先级的线程运行的机会。

  2 重新执行时机不同

  sleep()方法会使当前线程阻塞,在睡眠时间内不会被执行。而yield()方法只是使当前线程重新回到可执行状态,当前线程有可能在进入可执行状态后立刻又被执行。

  3 是否抛出异常不同

  sleep()方法声明抛出InterruptedException,而yield()方法声明没有抛出任何异常。

  4 可移植性不同

  sleep()方法比yield()方法(与操作系统有关)具有更好的可移植性。

  参考资料

  《Java程序员面试笔试宝典》 P150

原文地址:https://www.cnblogs.com/WJQ2017/p/8353015.html

时间: 2024-08-29 07:57:26

Java 多线程 sleep()方法与yield()方法的区别的相关文章

JAVA~多线程:sleep、yield方法

sleep不考虑其它线程的优先级 yield让位给相同或更高优先级的线程 sleep yield package multiThread2; public class TestThread042Yield { public static void main(String[] args) { MyThread3 t1 = new MyThread3("t1"); MyThread3 t2 = new MyThread3("t2"); MyThread3 t3 = ne

Java多线程中join、yield、sleep方法详解

在Java多线程编程中,Thread类是其中一个核心和关键的角色.因此,对该类中一些基础常用方法的理解和熟练使用是开发多线程代码的基础.本篇主要总结一下Thread中常用的一些静态方法的含义及代码中的使用. sleep方法 源码如下: /** * Causes the currently executing thread to sleep (temporarily cease * execution) for the specified number of milliseconds, subje

java多线程有几种实现方法,都是什么?

转自:http://www.cnblogs.com/liujichang/p/3150387.html 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方法有两种,分别是synchronized,wait与notify 先看一下java线程运行时各个阶段的运行状态 java实现多线程有两种方法 1.继承Thread类 2.实现Runnable接口 这两种方法的共同点: 不论用哪种方法,都必须用Thread(如果是Thead子类就用它本身)产生线程,然后再调用s

第五周作业(Java多线程创建的三个方法)

我最近在学习Java中多线程,并且觉得多线程这块在以后的Java开发中显得极为重要,就谈一下Java实现多线程的三种方式. JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没有返回值,只有第三种是带返回值的,这种方式一般要求比较高,并且较前两种难一些. 1.继承Thread类实现多线程继承Thread类的本质上也是实现了Runnable接口的一个实

java线程sleep(),join()和yield方法

join()方法示例如下: 1 public class Thread1{ 2 public static void main(String[] args) { 3 TestThread t=new TestThread("t"); 4 t.start(); 5 try{ 6 t.join(); //类似于调用run()方法. 7 }catch (InterruptedException e) { 8 9 } 10 for (int i=0;i<=10 ;i++ ) { 11 S

java 多线程阻塞队列 与 阻塞方法与和非阻塞方法

Queue是什么 队列,是一种数据结构.除了优先级队列和LIFO队列外,队列都是以FIFO(先进先出)的方式对各个元素进行排序的.无论使用哪种排序方式,队列的头都是调用remove()或poll()移除元素的.在FIFO队列中,所有新元素都插入队列的末尾.队列都是线程安全的,内部已经实现安全措施,不用我们担心 Queue中的方法 Queue中的方法不难理解,6个,每2对是一个也就是总共3对.看一下JDK API就知道了: 注意一点就好,Queue通常不允许插入Null,尽管某些实现(比如Link

Java多线程——wait方法和notify方法的详解

wait():等待,如果线程执行了wait方法,那么该线程会进入等待的状态,等待状态下的线程必须要被其他线程调用notify()方法才能唤醒. notify():唤醒,唤醒线程池等待线程其中的一个. notifyAll():唤醒线程池所有等待线程. wait与notify方法要注意的事项: 1. wait方法与notify方法是属于Object对象的. 2. wait方法与notify方法必须要在同步代码块或者是同步函数中才能使用. 3. wait方法与notify方法必须要由所对象调用. 消费

Java多线程系列-start()和run方法的区别

start()和run是Thread类里面的两个方法. 学过的都知道,我们创建了一个线程类,通过调用start()方法来启动线程,并且该线程会执行内部的run()方法,那么我们可以直接调用run()方法吗. 答案显而易见,当然是可以啊,可是前后两者还是有本质的区别的. start()和run() 调用start()方法,会创建一个新的线程,而这个新的线程会执行Thread类中的run方法 调用run()方法,不会创建新的线程,而是直接在当前的线程直接执行该方法. 以上就是这两个方法的本质区别,并

java多线程有几种实现方法?线程之间如何同步

java中多线程的实现方法有两种:1.直接继承thread类:2.实现runnable接口: 同步的实现方法有五种:1.同步方法:2.同步代码块:3.使用特殊域变量(volatile)实现线程同步:4.使用重入锁实现线程同步:5.使用局部变量实现线程同步 .其中多线程实现过程中需注意重写或者覆盖run()方法,而对于同步的实现方法中使用较常使用的是利用synchronized编写同步方法和代码块.