大家好,我使用
ThreadPoolTaskExecutor
线程池,五个线程,去读取xml然后解析插入数据库(insert)
问题:1、如果线程一插入mysql报错如何停止该线程不继续执行?
2、如果一个线程报错,如何终止所有的线程不继续执行?
<p>条件变量啊</p>
<p>join,wait,notify</p>
<p>callable 返回线程状态</p>
<p>问题 1、如果线程一插入mysql报错如何停止该线程不继续执行?<br> 答案:<br> 每个线程的定义中,都包含如下代码。如果遇到线程一插入mysql报错的情况,就调用方法 public void interrupt(),以停止该线程的执行。</p>
class ThreadOne implements Runnable {
public volatile boolean isComplete = false;
@Override
public void run() {
while(!isComplete)
{
}
}
public void interrupt(){ //中断目标线程,实际上就是设置中断状态为true
isComplete = true;
}
}
问题 2、如果一个线程报错,如何终止所有的线程不继续执行?
答案:
调用 ThreadPoolExecutor 对象的方法:void shutdown(), 就会按过去执行已提交任务的顺序发起一个有序的关闭,但是不接受新任务。
ThreadPoolExecutor pool = new ThreadPoolExecutor(...) ;
...
pool.shutdown();
<p>你线程1停止运行的意义是什么?多线程之间互相影响,线程通信使用共享变量即可,注意,使用volatile变量</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。