(1)run方法是线程执行时的方法,start是启动线程的方法,直接调用run方法不会以多线程的方式运行,必须调用start才能以多线程的方式运行.再说了,我们只有复写run方法,才在在多线程中写入自己定义的多线程运行代码
(2)线程代码中产生异常的话,那么这个线程的生命周期就结束了,这种情况称为线程泄漏。
注意,只是这个线程的生命结束了,但其他的线程还是活着的。如果是代码有 BUG,那其他线程走到这一块估计也会挂掉的。
package test;
public class ExceptionInThread extends Thread{
Integer id;
ExceptionInThread(Integer id){
this.id = id;
}
/**
* @param args
*/
synchronized void go(){
System.out.println("id is " + id);
throw new java.lang.NullPointerException();
}
public void run(){
// Bean b = new Bean();
// b.go(1);
this.go();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread ct = new ExceptionInThread(1);
Thread ct2 = new ExceptionInThread(2);
ct.start();
ct2.start();
}
}
|