多线程同步时其中一个线程出异常其它线程会不会继续执行?

禀赋苍天 2011-09-04 11:37:47
多线程同步时其中一个线程出异常其它线程会不会继续执行?
...全文
1426 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2011-09-04
  • 打赏
  • 举报
回复
LZ要区分synchronized和线程
继承Theard类或实现Runable接口,是为了使用线程
而synchronized是为了让线程同步,意思不一样的
也就是说你用不用Thread或Runable,都可以使用synchronized,即你用不用多线程,都可以使用syncronized来修饰你的方法,以保证线程安全,并不是说使用synchronized就一定要继承Thread或实现Runnable,要区分这些不同的概念。
禀赋苍天 2011-09-04
  • 打赏
  • 举报
回复
java线程synchronized同步一定要实现Theard线程或实现Runable接口 后再调用么?
qybao 2011-09-04
  • 打赏
  • 举报
回复
如果其他线程没有wait,或者wait中但不依赖这个挂掉的线程notify,那么会其他线程不会停止。如果线程挂掉是因为代码的问题,那么执行相同的代码的线程执行代码时也会挂掉。
zhengmaohu 2011-09-04
  • 打赏
  • 举报
回复
线程与线程之间除非你刻意安排,否则是无关的。也就是说,线程A里有了异常并不会影响线程B。

如果对于线程这些东西并不熟悉,而又想要做好并发处理的代码,可以考虑用我做的一些开源的工具类:http://jabb.sourceforge.net/javadoc/net/sf/jabb/util/thread/package-summary.html,文档可看这个PDF的最后一部分:http://jabb.sourceforge.net/doc/jabb_intro.pdf

这些类构成了一个小型的框架,能够简化多线程并行数据处理的程序开发。用起来很简单,只要这样:
1. 创建你自己的处理实现类,继承QueueProcessor或者QueueBatchUniqueProcessor,实现其中的process()方法。
2. 用BlockingQueue的实例来存放待处理的数据
3. 对于你自己的处理实现类,创建足够多的实例。每个实例都会有一个对应的工作线程在需要的时候被创
建。
4. 创建一个QueueConsumerGroup的实例来管理和控制整个多线程数据处理过程。

QueueProcessor适合于需要对数据进行一个一个地处理的场合。
QueueBatchUniqueProcessor适合于需要对数据进行分批处理的场合。而且它能够在每批中去除掉重复的数据。
xfeng101 2011-09-04
  • 打赏
  • 举报
回复
会继续执行

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();
}

}

完美灬缺陷 2011-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]
线程代码中产生异常的话,那么这个线程的生命周期就结束了,这种情况称为线程泄漏。

注意,只是这个线程的生命结束了,但其他的线程还是活着的。如果是代码有 BUG,那其他线程走到这一块估计也会挂掉的。
[/Quote]
+1
  • 打赏
  • 举报
回复
线程代码中产生异常的话,那么这个线程的生命周期就结束了,这种情况称为线程泄漏。

注意,只是这个线程的生命结束了,但其他的线程还是活着的。如果是代码有 BUG,那其他线程走到这一块估计也会挂掉的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧