黑马程序员技术交流社区
标题:
多线程中的run方法可以替换吗?
[打印本页]
作者:
小泉真也
时间:
2014-1-16 21:12
标题:
多线程中的run方法可以替换吗?
本帖最后由 小泉真也 于 2014-1-16 21:59 编辑
class Test extends Thread
复制代码
Q【1】
run() 可不可以换成 method()
只有是run方法保留,才能被 start调用?
Q【2】补充问题
前面自学,接触了一下 异常。既然主线程和另外的一个可以看作是同时进行,
那如果线程中的其中一个线程导入异常,却没有处理异常,发生错误;那另外一个线程是正确的。
运行结果是两个线程都无法继续,还是一个停止一个继续?
作者:
月生春
时间:
2014-1-16 21:25
(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();
}
}
作者:
够了没有
时间:
2014-1-16 21:42
Q【1】:run方法是Thread类的方法,只有Thread类极其子类才可以调用start方法,所以如果一个类中没有run方法,它是无法成功称为Thread类的子类的,也就不能调用start方法了。
Q【2】:只要有一个线程出现异常,整个程序就会停止,没出现异常的线程有可能运行了一半,也有可能运行完了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2