使用ExecutorService,提交任务卡死?

问题描述

最近在使用ExecutorService线程池提交任务,发现任务一直不执行,设置了超时时间,也会抛出超时异常。使用jstack查看线程是否死锁,并没有发现死锁存在。线程池定义代码如下:

 private final ExecutorService executorService = Executors.newFixedThreadPool(3, new ThreadFactory() {
        @Override
        public Thread newThread(Runnable r) {
            return new Thread("xxx-thread");
        }
    });

问题解决

其实问题很简单,创建线程没有指定Runnable,导致线程一直没有可执行的任务,创建线程改成new Threah(r,"xxx-thread")就可以了。这是因为线程池中线程没有指定Runnable对象,导致一直没有任务执行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺...
    OmaiMoon阅读 1,719评论 0 12
  • layout: posttitle: 《Java并发编程的艺术》笔记categories: Javaexcerpt...
    xiaogmail阅读 5,878评论 1 19
  • 【JAVA 线程】 线程 进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者...
    Rtia阅读 2,786评论 2 20
  • 一.线程安全性 线程安全是建立在对于对象状态访问操作进行管理,特别是对共享的与可变的状态的访问 解释下上面的话: ...
    黄大大吃不胖阅读 878评论 0 3
  • 褴褛衣衫心自正, 手持墨笔涂自像。 人善无语处静默, 笔下生辉自成章。
    镜花水月之明月苍天阅读 268评论 0 0