黑马程序员技术交流社区
标题:
求大神解析这道多线程题目
[打印本页]
作者:
jialp1024
时间:
2016-6-1 17:37
标题:
求大神解析这道多线程题目
1. class Waiting implements Runnable {
2. boolean flag=false;
3.public synchronized void run() {
4. if (flag) {
5. flag=false;
6.System.out.print ("1");
7. try { this.wait(); ) catch (Exception e) { }
8.System.out.print ("2");
9. }
10. else {
11. flag=true;
12. System.out.print ("3");
13. try{Thread.sleep (2000); } catch(Exception e) {}
14. System.out.print ("4");
15. notify();
16. }
17. }
18. public static void main (String [] args) {
19. Waiting w=new Waiting();
20. new Thread (w) .start();
21. new Thread (w) .start();
22. }
23. }
以下哪两项是止确的?(选两项)
A.代码输出l 3 4
B.代码输出3 4 1
C.代码输出l 2 3 4
D。代码输出1 3 4 2
E.代码运行完毕
F.代码不会完成
作者:
土菠萝
时间:
2016-6-1 18:05
这是一个好题目!
作者:
zhuoxu
时间:
2016-6-1 18:24
选择BF
两条线程运行,其中一条进入同步的run方法,由于flag初始化值为false,走else,flag被赋值ture,然后打印3,睡两秒,再打印4,此时并无线程执行wait方法,notify方法无效,第一条线程的run方法执行完毕.紧接着另一条线程进来,此时的flag已被赋值true,执行if中的代码,打印1,然后执行wait方法,进入睡眠状态,虽然释放锁,但是由于另一条线程已执行完毕,所以当前线程一直处于睡眠状态无法被唤醒,程序一直处于运行状态
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2