精华内容
下载资源
问答
  • sleep和wait区别

    2020-12-22 21:39:43
    sleep()方法 我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。 sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会...

    sleep()方法和wait()方法区别

     

    共同点:

    都是使线程暂停一段时间的方法。

    不同点:

    ①原理不同-sleep()是属于Thread类中的,而wait()方法,则是属于Object类中的。

    ②锁处理机制不同-sleep()最主要作用使线程暂停执行一段时间,时间一到自动恢复,不涉及线程通讯,因此,调用sleep()方法并不会释放锁。而当调用wait()方法的时候,线程会释放它所占的锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

    ③使用区域不同-wait()方法必须放在同步代码块或者同步方法中使用,sleep()可以用在任何地方

    展开全文
  • Java中的多线程是一种抢占式的机制,而不是分时机制。...2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。如果线程A希望立即结束线程B,则可以对线程...

    Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,但是只有一个线程在运行。

    共同点:

    1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。

    2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。

    如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep/join,则线程B会立刻抛出InterruptedException,在catch() {} 中直接return即可安全地结束线程。

    需要注意的是,InterruptedException是线程自己从内部抛出的,并不是interrupt()方法抛出的。对某一线程调用 interrupt()时,如果该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。但是,一旦该线程进入到 wait()/sleep()/join()后,就会立刻抛出InterruptedException 。

    不同点:

    1.Thread类的方法:sleep(),yield()等

    Object的方法:wait()和notify()等

    2.每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。

    sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

    3.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

    4.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

    线程的调度

    线程调度器按线程的优先级高低选择高优先级线程(进入运行中状态)执行,同时线程调度是抢先式调度,即如果在当前线程执行过程中,一个更高优先级的线程进入可运行状态,则这个线程立即被调度执行。

    抢先式调度又分为:时间片方式和独占方式。在时间片方式下,当前活动线程执行完当前时间片后,如果有其他处于就绪状态的相同优先级的线程,系统会将执行权交给其他就绪态的同优先级线程;当前活动线程转入等待执行队列,等待下一个时间片的调度。

    在独占方式下,当前活动线程一旦获得执行权,将一直执行下去,直到执行完毕或由于某种原因主动放弃CPU,或者是有一高优先级的线程处于就绪状态。

    举例说明

    首先我想说的是:在多线程编程中,经常会使用sleep与wait操作,我们理解sleep与wait的最大区别是sleep等待是不会释放当前锁,而wait则反之。我今天想到一个现实例子来比较这两者的区别。

    我以去火车站买票的例子来说明。我们去火车站买票,当站到售票窗口前要告诉售票员需要到哪里的票,什么时候发车的,售票员就通过电脑去给我们打印票,这个时候我们就得等待。如果我们用sleep模式,就得一直站在那里等,直到售票员给我们票;如果用wait模式,这个时候就离开我们所站的位置,后面的票友就可能站到我当前的位置(窗口前),我们要取票的话,就得重新排在队伍后面去取票。

    展开全文
  • Android Sleep和Wait区别

    2021-06-09 05:56:15
    1、这两个方法来自不同的类,sleep来自Thread类,wait 来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使是在a线程离调用了b的sleep方法,实际上还是a 去睡觉,要让b去睡觉要在b的代码中调用sleep.2...

    1、这两个方法来自不同的类,sleep来自Thread类,wait 来自Object类。

    sleep是Thread的静态类方法,谁调用的谁去睡觉,即使是在a线程离调用了b的sleep方法,实际上还是a 去睡觉,要让b去睡觉要在b的代码中调用sleep.

    2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使其他线程可以使用同步控制块或者方法。

    sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。Sleep(millseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

    Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

    3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

    synchronized(x){

    x.notify()

    //或者wait()

    }

    4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。

    展开全文
  • sleep和wait区别

    2021-04-26 18:08:59
    1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用...

    1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

    sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

    2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

    sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

    Thread.Sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

    3、使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

    synchronized(x){

    x.notify()

    //或者wait()

    }

    4、sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

    展开全文
  • 在bash中,使用后台任务来实现任务的“多进程化”。在不加控制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有多少任务就...do{sleep 3;echo1>>aa&& echo "done!"}donewaitcat...
  • sleep和wait区别是面试中一个非常常见的问题,因为从表象来看,好像sleep和wait都能使线程处于阻塞状态,但是却有着本质上的却别。sleep是线程类Thread的方法,但是wait是java对象老祖宗Object中的方法。sleep方法...
  • #线程的6种状态 - NEW # 刚创建的线程 - RUNNABLE # 正在运行的线程 - BLOCKED # 线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行 ...wait / sleep区别 1.来源不同 sleep来自Thread类,w
  • 1.进程线程进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。线程:就是进程中的一个独立的控制单元,是比进程更小的执行单位。线程只是一种为单一...
  • sleep和wait区别 sleep()属于Thread类,wait()属于Object sleep()导致程序在指定时间内暂停执行,但监控状态依然保持着,指定时间过后,会自动恢复运行状态 sleep()方法不会释放线程锁 wait()方法,线程会释放线程...
  • wait方法是Object类的成员方法2、sleep方法使当前线程暂停执行指定的时间,让出cpu给其他线程,但是它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep方法后,线程不会释放对象锁;而当...
  • 关于sleep()方法和wait()方法的区别 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法(锁代码块方法锁)。 wait,notifynotifyAll只能在同步控制方法或者同步控制块...
  • 最大的不同是在等待时wait 会释放锁,而sleep 一直持有锁。Wait 通常被用于线程间交互,sleep 通常被用于暂停执行。 直接了解的深入一点吧: 在Java 中线程的状态一共被分成6 种: 初始态: NEW 创建一个Thread 对象...
  • sleep()是Thread类静态方法,wait()是Object类实例方法。 2、释放/持有锁 sleep()不会释放当前对象的锁资源。 wait()会释放对象锁,进入等待这个对象的等待锁定池中去,当有notifyAll()或者是该对象的notify()时,...
  • 首先说,虽然大家用Java Thread的api,但实际上Thread是OS提供的抽象功能。这么理解会让整个问题更清楚。千万不要从类啊,静态方法之类的角度去看待这个问题。这是Java设计上比较不可取的地方。一个Thread是指“是...
  • 对于面试多线程也经常会问到sleep和wait区别,如果不仔细研究的确会一脸懵逼,但确实有显著差别 四、wait和notify以及notifyAll的联系 wait是让一个对象等待,notify就是将等待该对象的线程唤醒,notifyAll则是...
  • 1.概述在这篇简短的文章中,我们将看一下核心Java 中的标准sleep()和wait()方法,并了解它们之间的差异相似之处。2. wait和sleep之间的一般差异简单地说,wait()是一个用于线程同步的实例方法。它可以在任何对象上...
  • 在JAVA的学习中,不少人会把sleep和wait搞混,认为都是做线程的等待,下面主要介绍下这俩者是什么,及了解它们之间的差异相似之处。一般差异简单来说,wait()是一个用于线程同步的实例方法。因为定义在java.lang....
  • 对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又...
  • Thread类中sleep()在java8官方文档中解释如下: static void sleep(longmillis) 使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器调度程序的精度准确性。 static ...
  • sleepwait区别:1、sleep方法是线程静态方法,wait方法是Object对象方法;2、sleep使线程休眠,不会释放锁;wait方法是在获取锁情况下进行等待的,等待时会释放锁;3、都可以响应中断。public class Test {static ...
  • 1、所属类不同:wait()是Object类中的非静态方法;sleep()、yield()是Thread类中的静态方法;也是Thread类中的静态方法...3、释放资源:wait()会释放线程所占用的锁管程;sleep()释放线程所占用的锁,但不释放管程;
  • wait和sleep区别

    2021-03-04 16:10:06
    进程线程 进程:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 线程:通常在一个进程...
  • Java中wait和sleep区别

    2021-09-07 18:31:11
    wait和sleep区别: 1. wait的使用必须配合锁使用,sleep则不用 2. wait会释放锁,sleep不会释放锁 3. wait之后线程进入WAITING,sleep进入TIMED_WAITING 4. wait可以被注定唤醒,sleep只能等待时间结束 5. wait是...
  • sleep() 与 wait()区别

    2021-12-14 23:06:10
    sleep() 属于Thread类的方法;wait() 属于Object 的方法。 2、释放锁不同 sleep() 不释放锁;wait() 释放锁。 记忆技巧:锁在门内部,在里面睡觉要锁门;到外面等候需释放锁(否则出不去)。 3、用法不同 sleep...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 286,601
精华内容 114,640
关键字:

sleep和wait的区别

友情链接: khgjr_IO.rar