线程的安全主要来源于其运行的并发性和对资源的共享性,以下哪种方法可以解决线程死锁安全()
A: 让一个线程在运行时,其他线程必须等待该线程运行完毕才能抢占CPU
B: 通过程序确定资源的合理分配算法,避免线程永远占据系统资源
C: 需要暂停时,让线程的run()方法结束运行以释放资源;继续时,新开辟一个线程继续工作
D: 将线程暂停或继续,在Thread类中置入一个标志,指出线程应该活动还是挂起
A: 让一个线程在运行时,其他线程必须等待该线程运行完毕才能抢占CPU
B: 通过程序确定资源的合理分配算法,避免线程永远占据系统资源
C: 需要暂停时,让线程的run()方法结束运行以释放资源;继续时,新开辟一个线程继续工作
D: 将线程暂停或继续,在Thread类中置入一个标志,指出线程应该活动还是挂起
举一反三
- 下列关于线程暂停类方法的叙述,错误的是( )。 A: sleep()方法使线程暂停,让出CPU给低优先级的线程运行 B: yield()方法使线程暂停,让出CPU使低优先级的线程运行,如果不存在有机会运行的线程,yield()方法将直接返回,线程继续 C: join()方法使当前线程暂停,等待某线程类特定对象运行结束 D: suspend()挂起的线程不能自动恢复
- 线程对象的___________方法用来阻塞当前线程,指定线程运行结束或超时后继续运行当前线程。
- 下列关于Thread类的线程控制方法的说法中,错误的是( ) A: 线程可以通过调用sleep()方法使比当前线程低优先级的线程运行 B: 线程可以通过调用yield()方法使和当前线程优先级一样的线程运行 C: 线程的sleep()方法调用结束后,该线程进入运行状态 D: 若没有相同优先级的线程处于可运行状态,线程调用yield()方法时,当前线程将继续执行
- 处于等待的线程,必须被其他线程唤醒后才能继续运行。( )
- 编写一个多线程程序实现如下功能:线程 A 和线程 B 分别在屏幕上显示信息“…start”后,调用 wait 等待;线程 C 开始后调用 sleep 休眠一段时间,然后调用 notifyall,使线程 A 和线程 B 继续运行。线程 A 和线程 B 恢复运行后输出信息“…end”后结束,线程 C 在判断线程 B 和线程 A 结束后自己结束运行。