编写一个多线程程序实现如下功能:线程 A 和线程 B 分别在屏幕上显示信息“…start”后,调用 wait 等待;线程 C 开始后调用 sleep 休眠一段时间,然后调用 notifyall,使线程 A 和线程 B 继续运行。线程 A 和线程 B 恢复运行后输出信息“…end”后结束,线程 C 在判断线程 B 和线程 A 结束后自己结束运行。
举一反三
- 下列关于Thread类的线程控制方法的说法中,错误的是( ) A: 线程可以通过调用sleep()方法使比当前线程低优先级的线程运行 B: 线程可以通过调用yield()方法使和当前线程优先级一样的线程运行 C: 线程的sleep()方法调用结束后,该线程进入运行状态 D: 若没有相同优先级的线程处于可运行状态,线程调用yield()方法时,当前线程将继续执行
- 线程对象的___________方法用来阻塞当前线程,指定线程运行结束或超时后继续运行当前线程。
- 用Thread类和Runnable接口实现多线程,线程执行10次循环,每次显示线程名称并随机休眠一段时间,线程运行结束时显示结束信息。
- 下面关于线程休眠的说法正确的是() A: sleep()需指定休眠时间,线程实际休眠的时间会大于或等于该休眠时间 B: 调用sleep()方法会使当前线程会从"运行状态"进入到"休眠(阻塞)状态" C: 当前线程调用sleep()方法只能控制当前正在运行的线程休眠,而不能控制其它线程休眠 D: 当休眠时间结束后,线程就会返回到就绪状态,而不是立即开始运行
- 有关线程的叙述说法错误的是( )。 A: 一旦一个线程被创建,它就立即开始运行 B: 使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行 C: 一个线程可以调用yield()方法使其他线程有机会运行 D: join()方法可使当前线程阻塞,直到调用该方法的线程运行结束