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

题目
( 难度:中等)下列关于线程说法正确的是:
A.调用sleep不会释放对象锁
B.调用wait方法导致本线程放弃对象锁
C.当一个线程进入一个对象的一个synchronized方法后,其它线程不可进入此对象的其它方法
D.notify():唤醒全部处于等待状态的线程
E.任何对象都具有sleep方法
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

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

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

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

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


参考答案:ABCD

第2题:

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

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

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

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

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


正确答案:B
解析:本题考查Java线程中对象的加锁及其操作。对象加锁的使用非常灵活,一定要注意。对象的锁在如下几种情况下由持有线程返还:当synchronized()语句块执行完后,所以选项A错误;当在synchronized()语句块中出现异常 (exception),所以选项B错误;当持有锁的线程调用该对象的wait()方法,此时该线程将释放对象的锁,所以选项D错误。而当调用了线程的suspend()方法只是使线程暂时停止执行,可以使用其他线程调用resume()方法恢复执行,所以选项B正确。

第3题:

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

A ) yield 方法

B )另一个线程的 join 方法

C ) sleep 方法

D )一个对象的 notify 方法


正确答案:B

第4题:

当一个线程进入一个对象的一个synchronized方法后,

其它线程是否可进入此对象的其它方法?


正确答案:

 

分几种情况:
1.其他方法前是否加了synchronized 关键字,如果没加,则能。
2.如果这个方法内部调用了wait,则可以进入其他synchronized 方法。
3.如果其他个方法都加了synchronized 关键字,并且内部没有调用wait,则不能。

第5题:

如果线程正处于阻塞状态,不能够使线程直接进入可运行状态的情况是

A.sleep()方法的时间到

B.获得了对象的锁

C.线程在调用t.join()方法后,线程t结束

D.wait()方法结束


正确答案:D
解析:线程调用wait()方法时,线程由运行状态进入等待阻塞状态;在等待阻塞状态下的线程若被notifyAll()和notionAll()唤醒、被interrupt()中断或者等待时间到,线程将进入对象锁阻塞状态,而不是直接进入可运行状态。

第6题:

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

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

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

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

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


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

第7题:

下列说法中错误的一项是

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

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

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

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


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

第8题:

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

A.yield方法

B.另一个线程的join方法

C.sleep方法

D.一个对象的notify方法


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

第9题:

当一个线程进入一个对象的一个synchronized方法后,

其它线程是否可进入此对象的其它方法?


正确答案:

 

分几种情况:

1.其他方法前是否加了synchronized 关键字,如果没加,则能。

2.如果这个方法内部调用了wait,则可以进入其他synchronized 方法。

3.如果其他个方法都加了synchronized 关键字,并且内部没有调用wait,则不能。

第10题:

5,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?


正确答案:
 

更多相关问题