下列说法中错误的一项是______。A.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用wait()方法B.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify()方法C.wait()和notify()可以实现线程的同步操作D.线程在synchronized块中执行完操作后,调用notify()方法通知正在等待的线程重新占有锁

题目

下列说法中错误的一项是______。

A.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用wait()方法

B.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify()方法

C.wait()和notify()可以实现线程的同步操作

D.线程在synchronized块中执行完操作后,调用notify()方法通知正在等待的线程重新占有锁


相似考题
更多“下列说法中错误的一项是______。A.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用wait()方法B.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify()方法C.wait()和notify()可以实现线程的同步操作D.线程在synchronized块中执行完操作后,调用notify()方法通知正在等待的线程重新占有锁”相关问题
  • 第1题:

    在-个线程中调用下列方法,不会改变该线程运行状态的是( )。

    A.yield方法

    B.另-个线程的join方法

    C.sleep方法

    D.-个对象的notify方法


    正确答案:B
    另-个线程的join方法是使得另-个线程等待,直到本线程结束为止,另-个线程恢复到可运行状态,不会改变本线程的运行状态。

  • 第2题:

    下列情况中,不会使线程返回所持有的对象锁的是( )。

    A.当synchronized()语句块执行完毕

    B.当调用了线程的suspend()方法

    C.当在synchronized()语句块中出现异常(Exception)

    D.当持有锁的线程调用该对象的wait()方法


    正确答案:B
    解析:suspend()方法只是挂起线程,并不释放线程中持有的锁。而选项A、C、D都可以释放线程所持有的锁。

  • 第3题:

    下列说法中错误的一项是

    A.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用wait()方法

    B.当线程需要在synchronized块中等待共享数据状态改变时,则需要调用notify()方法

    C.线程在synchronized块中执行完操作后,调用notify()方法通知正在等待的线程重新占有锁

    D.wait()和notify()可以实现线程的同步操作


    正确答案:B
    解析:本题考查线程间交互的概念。当线程进入synchronized块后,共享数据的状态并不一定满足该线程的需要,它要等待其他线程将共享数据改变为所需要的状态后才能继续执行,但由于此时它占有了该对象的锁,其他线程无法对共享数据进行操作,此时线程调用wait()方法进入等待状态,并且暂时释放共享数据的对象锁,其他线程可以获得该对象锁,进入synchronized块进行操作,操作完成之后,再调用notify()方法通知等待的线程重新占有锁,这样就实现了线程的同步操作。由此可见,wait()方法是线程需要在 synchronized块中等待共享数据状态改变时调用,而notify()方法是线程在synchronized块中执行完操作后调用,用来通知正在等待的线程重新占有锁,选项B的说法错误。

  • 第4题:

    如果线程正处于运行状态,可使该线程进入阻塞状态的方法是

    A.yield()

    B.start()

    C.wait()

    D.notify()


    正确答案:C
    解析:本题考查线程的生命周期。线程的生命周期主要分为以下几个状态:新建状态、可运行状态、运行状态、阻塞状态和终止状态。各周期之间的转换关系及控制方法如下图所示:

    从图上可知,题目的四个选项中,只有选项C的方法可以使线程进入阻塞状态。

  • 第5题:

    下列方法被调用后,一定使调用线程改变当前状态的是( )。A.notify( )B.yield( )SXB

    下列方法被调用后,一定使调用线程改变当前状态的是( )。

    A.notify( )

    B.yield( )

    C.sleep( )

    D.isAlive( )


    正确答案:C
    线程调用sleep函数后,使当前线程进入停滞状态。yield函数可使线程进入可执行状态,排程器从可执行状态的线程中重新排程,调用了yield函数的线程有可能被马上执行,也有可能不会马上执行。notify函数从线程等待池中移走任意-个线程,并把它放到锁标志等待池中,其状态仍旧是等待。所以只有sleep-定会改变线程状态。

  • 第6题:

    ( 32 )在多线程并发程序设计中,能够给对象 x 加锁的语句是

    A ) x.wait( )

    B ) synchronized(x)

    C ) x.notify( )

    D ) x.synchronized( )


    正确答案:B

  • 第7题:

    在线程同步中, 为了唤醒另一个等待的线程,使用下列方法()

    • A、sleep()
    • B、wait()
    • C、notify()
    • D、join()

    正确答案:C

  • 第8题:

    处于等待的线程,如果要使该线程恢复运行状态,应调用方法()

    • A、start()
    • B、run()
    • C、resume()
    • D、notify()

    正确答案:D

  • 第9题:

    如果一个方法声明为同步方法,在有些情况下仍然需要其他线程访问该数据,可在该方法中使当前线程等待调用的方法是()

    • A、sleep()
    • B、stop()
    • C、wait()
    • D、notify()

    正确答案:C

  • 第10题:

    单选题
    线程同步中,对象的锁在()情况下持有线程返回
    A

     当synchronized()语句块执行完后

    B

     当在synchronized()语句块执行中出现例外(exception)时

    C

     当持有锁的线程调用该对象的wait()方法时

    D

     以上都是


    正确答案: C
    解析: 暂无解析

  • 第11题:

    单选题
    下列情况中,不会使线程返回所持有的对象锁的是(  )。
    A

    当synchronized()语句块执行完毕

    B

    当调用了线程的suspend()方法

    C

    当在synchronized()语句块中出现异常(Exception)

    D

    当持有锁的线程调用该对象的wait()方法;


    正确答案: A
    解析:
    对象的锁在如下几种情况下由持有线程返还:①当synchronized()语句块执行完后;②当在synchronized()语句块中出现异常(exception)时;③当持有锁的线程调用该对象的wait()方法时。而调用线程的suspend()方法只是使线程暂时停止执行,可以使用其他线程调用resume()方法恢复执行。

  • 第12题:

    ( 难度:中等)下列关于线程说法正确的是:
    A.调用sleep不会释放对象锁
    B.调用wait方法导致本线程放弃对象锁
    C.当一个线程进入一个对象的一个synchronized方法后,其它线程不可进入此对象的其它方法
    D.notify():唤醒全部处于等待状态的线程
    E.任何对象都具有sleep方法

    答案:ABC

  • 第13题:

    在一个线程中调用下列方法,不会改变该线程运行状态的是( )。

    A.yield方法

    B.另一个线程的join方法

    C.sleep方法

    D.一个对象的notify方法


    正确答案:B
    B。【解析】另一个线程的join方法是使得另一个线程等待,直到本线程结束为止,另一个线程恢复到可运行状态,不会改变本线准的运行状态。

  • 第14题:

    实现线程交互的wait()和notify()方法在______类中定义。


    正确答案:Object。
    Object。 解析:waitO和notify()方法是java.lang.object类的方法,是实现线程通信的两个方法。

  • 第15题:

    下列说法中,错误的一项是______。

    A.线程一旦创建,则立即自动运行

    B.线程创建后需要调用start()方法,将线程置于可运行状态

    C.线程处于可运行状态,意味着它可以被调度

    D.调用线程的start()方法后,线程也不一定能立即执行


    正确答案:A

  • 第16题:

    为了支持压栈线程与弹栈线程之间的交互与同步,在程序的下画线处依次填入的语句是( )。

    A.synchronized( )

    B. notify( )

    C.synchronized this.wait( )

    D.svnchronized this.notify( )

    E.Serializable sleep( )


    正确答案:B
    在Synchronized块中等待共享数据的状态改变时调用wait()方法,这样该线程等待并暂时释放共享数据对象的锁。

  • 第17题:

    在以下哪种情况下,线程进入就绪状态?

    A.线程调用了sleep()方法时

    B.线程调用了join()方法

    C.线程调用了yield()方法时

    D.线程调用了notify()方法


    答案:D

  • 第18题:

    在以下哪种情况下,线程进入就绪状态?()

    • A、线程调用了sleep()方法时
    • B、线程调用了join()方法(终止)
    • C、线程调用了yield()方法时
    • D、线程调用了notify()方法

    正确答案:D

  • 第19题:

    对于wait()方法,下面说法正确的是?()

    • A、wait()方法的调用者是同步锁对象
    • B、wait()方法使线程进入等待状态
    • C、调用同一锁对象的notify()或notifyAll()方法可以唤醒调用wait()方法等待的线程
    • D、调用wait()方法的线程会释放同步锁对象

    正确答案:A,B,C,D

  • 第20题:

    线程同步中,对象的锁在()情况下持有线程返回

    • A、 当synchronized()语句块执行完后
    • B、 当在synchronized()语句块执行中出现例外(exception)时
    • C、 当持有锁的线程调用该对象的wait()方法时
    • D、 以上都是

    正确答案:D

  • 第21题:

    单选题
    在一个线程中调用下列方法,不会改变该线程运行状态的是(  )。
    A

    yield方法

    B

    另一个线程的join方法

    C

    sleep方法

    D

    一个对象的notify方法


    正确答案: C
    解析:
    另一个线程的join方法是使得另一个线程等待,直到本线程结束为止,不会改变本线程的运行状态。A项,当前线程执行了yield()或者当前线程因调度策略可以使当前线程进入可运行状态;C项,线程调用了sleep()方法、join()方法时,线程进入阻塞状态;D项,在等待阻塞状态下的线程若被notify()和notifyAll()唤醒、被interrupt()中断或等待时间到,线程将进入对象锁阻塞状态。

  • 第22题:

    多选题
    对于wait()方法,下面说法正确的是?()
    A

    wait()方法的调用者是同步锁对象

    B

    wait()方法使线程进入等待状态

    C

    调用同一锁对象的notify()或notifyAll()方法可以唤醒调用wait()方法等待的线程

    D

    调用wait()方法的线程会释放同步锁对象


    正确答案: C,D
    解析: 暂无解析

  • 第23题:

    单选题
    在以下哪种情况下,线程进入就绪状态?()
    A

    线程调用了sleep()方法时

    B

    线程调用了join()方法(终止)

    C

    线程调用了yield()方法时

    D

    线程调用了notify()方法


    正确答案: D
    解析: 暂无解析