Java语言程序设计

单选题下列情况中,不会使线程返回所持有的对象锁的是(  )。A 当synchronized()语句块执行完毕B 当调用了线程的suspend()方法C 当在synchronized()语句块中出现异常(Exception)D 当持有锁的线程调用该对象的wait()方法;

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

当synchronized()语句块执行完毕

B

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

C

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

D

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

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

在以下哪种情况下,对象不会解锁?( )

A.synchronized段语句块执行完毕

B.synchronized语句块中出现exception

C.持锁线程调用对象wait () 方法

D.synchronized语句块中调用suspend () 方法


正确答案:D
解析:suspend ()方法只是挂起线程,并不释放线程中持有的锁。

第2题:

resume()力法恢复哪些线程的执行

A.通过调用stop()方法而停止的线程

B.通过调用sleep()方法而停止运行的线程

C.通过调用wait()方法而停止运行的线程

D.通过调用suspend()方法而停止运行的线程


正确答案:D
解析:本题考查resume()方法的使用。在Thread的API文档中的说明是该方法恢复被挂起(suspend)的线程。该方法首先调用该线程的无参的checkAccess()方法,这可能在当前线程上抛出SecurityException异常,如果该线程是活着的(alive)但被挂起(suspend),它被恢复并继续它的执行进程。

第3题:

resume( )方法恢复哪些线程的执行?

A.通过调用stop( )方法而停止的线程

B.通过调用sleep( )方法而停止运行的线程

C.通过调用wait( )方法而停止运行的线程

D.通过调用suspend( )方法而停止运行的线程


正确答案:D
解析: Thread的API文档说明此方法恢复被挂起的线程。首先调用此线程的无参数的 checkAccess( )方法,这可能在当前线程上抛出SecurityException异常,如果此线程是活动的但被挂起,它将被恢复并继续其执行进程。

第4题:

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

A.X.wait( )

B.svnchronized(x)

C.X.notify( )

D.x.synchronized( )


正确答案:B
Java平台将每-个由synchronized(ob—ject)语句指定的对象设置-个锁,称为对象锁,是-种独占的排他锁。

第5题:

下列说法中错误的一项是

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

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

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

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


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

第6题:

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

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

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

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

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


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

第7题:

方法resume()负责恢复哪些线程的执行( )。

A.通过调用stop()方法而停止的线程

B.通过调用sleep()方法而停止运行的线程

C.通过调用wait()方法而停止运行的线程

D.通过调用suspend()方法而停止运行的线程


正确答案:D
解析:本题是考查线程中能引起resume()方法调用的情况,在Thread的API文档中的说明是该方法恢复被挂起的(suspendeD) 线程。该方法首先调用该线程的无参的checkAccess()方法,这可能在当前线程上抛出SecurityExcep tion异常,如果该线程是活着的(alive)但被挂起(suspenD) ,则它被恢复并继续执行。

第8题:

下列关于线程的说法中,正确的是

A.一个线程一旦被创建,就立即开始运行

B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行

C.当运行状态的线程因为调用了yield()方法而停止运行,它一定被放在可运行线程队列的前面

D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态


正确答案:B
解析:线程被创建后,如果调用start()方法,线程便处于就绪状态,即可执行状态,但并不一定立即得到执行。当调用了yield()方法之后,线程放在处于同一个优先级的可执行的线程队列的后面。当阻塞的线程获得锁后,将进入就绪状态,并不一定立即执行。

第9题:

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

A.sleep()方法的时间到

B.获得了对象的锁

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

D.wait()方法结束


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

第10题:

resume方法恢复( )的执行。

A.通过调用stop方法而停止的线程

B.通过调用sleep方法而停止运行的线程

C.通过调用wait方法而停止运行的线程

D.通过调用suspend方法而停止运行的线程


正确答案:D
D。【解析】本题考查resume方法的使用。在Thread的API文档中的说明是该方法恢复被挂起(suspende)的线程。该方法首先调用该线程的无参的checkAccess方法,这可能在当前线程上抛出SecurityExeeption异常,如果该线程是活着的(alive)但被挂起(suspend),它被恢复并继续它的执行进程。

更多相关问题