开发者社区> 问答> 正文

ThreadPoolTaskExecutor线程池问题?报错

大家好,我使用

ThreadPoolTaskExecutor

线程池,五个线程,去读取xml然后解析插入数据库(insert)

问题:1、如果线程一插入mysql报错如何停止该线程不继续执行?

          2、如果一个线程报错,如何终止所有的线程不继续执行?

展开
收起
爱吃鱼的程序员 2020-06-06 15:25:54 580 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <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>
    
    2020-06-06 15:26:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
多IO线程优化版 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载