全国信息技术应用考试

线程同步执行过程中,wait方法与()方法是匹配使用,否则易造成死锁。

题目

线程同步执行过程中,wait方法与()方法是匹配使用,否则易造成死锁。

参考答案和解析
正确答案:notify
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

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

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

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

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

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


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

第2题:

下面属于Java线程同步方法的方法有 ( )

A.joiny()

B.run()

C.wait()

D.destroy()


正确答案:B

第3题:

在Java多线程中sleep()和wait()方法,下列说法不正确的是()

A.sleep()方法是使线程停止一段时间的方法

B.在sleep时间间隔期满后,线程立即恢复执行

C.wait()方法用于线程交互

D.使用wait()方法后,线程需要被通知唤醒


参考答案:B

第4题:

下列说法中错误的一项是

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

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

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

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


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

第5题:

使线程放弃当前分得的CPU时间,但不使线程阻塞,即线程仍处于可执行状态,随时可能再次分得CPU时间的方法是( )。

A.sleep()方法

B.suspend()方法

C.yield()方法

D.wait()方法


正确答案:C
解析:本题考查对线程阻塞概念的理解程度。为了解决对共享存储区的访问冲突,Java引入了同步机制。但当多个线程对共享资源访问时,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了的资源也可能不止1个。为了解决这种情况下的访问控制问题,Java引入了对阻塞机制的支持。阻塞指的是暂停一个线程的执行以等待某个条件发生(如某资源就绪),学过操作系统的同学对它一定已经很熟悉了。Java提供了大量方法来支持阻塞,下面逐一分析。选项A错误,slccp()允许指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间内进入阻塞状态,不能得到CPU时间,指定的时间一过,线程重新进入可执行状态。典型地,slecp()被用在等待某个资源就绪的情形:测试发现条件不满足后,让线程阻塞一段时间后重新测试,直到条件满足为止。选项B错误,suspend()和resume()两个方法常配套使用,suspcnd()使得线程进入阻塞状态,并且不会自动恢复,必须其对应的resume()被调用,才能使得线程重新进入可执行状态。典型地,suspend()和resume()被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个线程产生了结果后,调用resume()使其恢复。选项C正确,yield()使得线程放弃当前分得的CPU时间,但是不使线程阻塞,即线程仍处于可执行状态,随时可能再次分得CPU时间。调用yield()的效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。选项D错误,wait()和notify()两个方法常配套使用,wait()使得线程进入阻塞状态,它有两种形式,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的notify()被调用或者超出指定。

第6题:

在Java中,可以利用程序使线程从执行状态转换到阻塞状态,即调用wait方法。()


参考答案:正确

第7题:

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

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

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

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

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


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

第8题:

在Java多线程中sleep()和wait()方法,下列说法不正确的是()。

A.sleep()方法是使线程停止一段时间的方法;

B.在sleep时间间隔期满后,线程立即恢复执行;

C.wait()方法用于线程交互

D.使用waitI()方法后,线程需要被通知唤醒;


参考答案:B

第9题:

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

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

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

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

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


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

第10题:

resume方法恢复( )的执行。

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

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

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

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


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

更多相关问题