具体问题在代码注释中
源码来自《Java多线程编程核心技术》 第三章开篇
求问哇~~~非常感谢~~~
public class MyList {
private List list=new ArrayList();
public void add(){
list.add("nice" );
}
public int size(){
return list.size();
}
}public class ThreadA extends Thread {
private MyList list;
public ThreadA(MyList list) {
super();
this.list = list;
}
@Override
public void run() {

try{
for(int i=0;i<10;i++){
list.add();
System.out.println("add "+(i+1));
Thread.sleep(1000);
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public class ThreadB extends Thread {
private MyList list;
public ThreadB(MyList list) {
super();
this.list = list;
}
@Override
public void run() {
try{
while(true){
/**
 * 按书本上源码,不能正确的运行
 * 但while语句中加一句输出能正确输出或者说正确抛出异常,书本上源码是没有的
 * 求问,为什么
 * jdk1.8
 * myeclipse 2016
 */
if(list.size()==5){
System.out.println("5,threadB out....");
throw new InterruptedException();
}
}
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
public class Run {
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();
}
}