阅读《Java多线程编程核心技术》线程间通信时遇到的一个问题,求解

青峰素装 青峰素装 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
阅读《Java多线程编程核心技术》线程间通信时遇到的一个问题,求解

package com.qf.test01;

import java.util.ArrayList;
import java.util.List;

/**
* @author qf
* @create 2018-09-13 17:47
*/
public class MyList {
private List list = new ArrayList();
public void add(){
list.add("qf");
}
public int size(){
//System.out.println("MyList.size:"+list.size());
return list.size();
}
}

}

=============================
package com.qf.test01;

/**
* @author qf
* @create 2018-09-13 17:45
*/
public class ThreadA extends Thread {
private MyList myList;

public ThreadA(MyList myList) {
this.myList = myList;
}

@Override
public void run() {
try {
System.out.println("a run");
for (int i = 0; i < 10; i++) {
myList.add();
System.out.println("添加了"+(i+1)+"个元素");
Thread.sleep(1000);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

=============================
package com.qf.test01;

/**
* @author qf
* @create 2018-09-13 17:45
*/
public class ThreadB extends Thread {
private MyList myList;

public ThreadB(MyList myList) {
this.myList = myList;
}

@Override
public void run() {
try {
System.out.println("b run");
while (true){
if(myList.size() == 5){
System.out.println("线程b要退出了");
throw new InterruptedException();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

=============================
package com.qf.test01;

/**
* @author qf
* @create 2018-09-14 9:23
*/
public class Test {
public static void main(String[] args) {
MyList list = new MyList();
ThreadA a = new ThreadA(list);
a.setName("a");
a.start();
ThreadB b = new ThreadB(list);
b.setName("b");
b.start();
}
}

---------------------------------------------------------------------------------------------------------
上面代码运行结果:
a run
添加了1个元素
b run
添加了2个元素
添加了3个元素
添加了4个元素
添加了5个元素
添加了6个元素
添加了7个元素
添加了8个元素
添加了9个元素
添加了10个元素
-----------------------------------------------------------------------------------------------------------
想问下,为什么b线程中设置抛异常的语句没有执行?
...全文

相关推荐

评论 46
收藏 已收藏
分享
返回顶部
青峰素装
Java SE 62,620 成员 307,251 内容