`
palwang
  • 浏览: 51410 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

线程池程序不会结束与shutdown有关

 
阅读更多
    使用线程池时,在main完成之前没的调用shutdonw使得,java进程不会结束。线程池默认的线程不是“守护线程”,线程池的timeout 大于 0时,code数量的线程是不会终止的。所以,当所有任务完成后,java程序不会结束。
    ExecutorService.shutdown()将使之前通过Executor.execute()提交的任务运行结束后关闭线程池。ExecutorService还提供了一个与ExecutorService.shutdown()对应的方法名为ExecutorService.shutdownNow()该方法试图将结束已经提交的任务并结束线程池。
分享到:
评论

相关推荐

    java线程池使用后到底要关闭吗

    shutdown()方法将等待所有任务执行完毕后销毁线程,而shutdownNow()方法将立即结束所有线程,不管是否正在运行,并返回未执行完毕的任务列表。 使用java线程池时,一定要关闭线程池,否则可能会导致内存泄露和应用...

    线程池管理线程demo

    当不再需要线程池时,应调用`ExecutorService`的`shutdown()`或`shutdownNow()`方法来停止接收新任务并优雅地结束正在执行的任务。`shutdown()`等待所有任务执行完成,而`shutdownNow()`尝试停止正在执行的任务。 ...

    Java线程池使用说明

    在Java中,与线程池相关的几个重要类和接口包括: 1. Executor:它是Java中线程池的顶级接口,定义了执行线程的抽象方法,但它本身并不直接提供线程池功能。 2. ExecutorService:是真正的线程池接口,提供了一...

    java线程池概念.txt

    线程池的排队策略与BlockingQueue有关。 threadFactory:线程工厂,主要用来创建线程:默认值 DefaultThreadFactory; handler:表示当拒绝处理任务时的策略,就是上面提及的reject操作;有以下四种取值:  ...

    JDK自带线程池分析

    JDK自带线程池分析 JDK 自带线程池是 Java 语言中用于管理和执行线程的工具,旨在提高多线程...通过本文的介绍,我们可以了解 JDK 自带线程池的组成、创建方法和优点,从而更好地使用线程池来开发高效的多线程程序。

    简单C++线程池实现

    3. **等待线程池关闭**:在主程序结束前,需要等待线程池完成所有任务。这可能涉及调用一个`join`或`shutdown`方法,确保线程池正确关闭。 泛型编程是C++中的重要概念,允许线程池支持不同类型的可调用对象作为任务...

    c++ 多线程线程池 demo

    - `shutdown()`方法:停止线程池,等待所有任务完成,然后安全地结束工作线程。 通过分析和学习OEasyPool-1.0的源代码,我们可以了解其具体实现细节,如任务的提交、线程的调度策略、异常处理、资源管理等方面的...

    android线程池demo

    3. **线程池关闭**:当不再需要线程池时,通过调用`ExecutorService`的`shutdown()`或`shutdownNow()`方法来停止接收新任务,并优雅地结束已有的任务。 ### 线程池的优化 在实际应用中,我们需要根据应用的需求来...

    JDK1.5线程池源码及详细注释

    在Java并发编程中,线程池(ThreadPoolExecutor)是一个至关重要的工具,它允许开发者有效地管理线程资源,提高系统的...在实际开发中,根据应用的需求和性能指标来定制线程池配置,是优化并发程序性能的关键步骤之一。

    并发编程之Executor线程池原理与源码解读.pdf

    而Callable接口与Runnable类似,不同的是Callable可以有返回值,并且可以在执行结束后抛出异常,它通过call()方法来实现任务的执行。 线程池调优主要包括合理配置线程池的参数(如核心线程数、最大线程数、存活时间...

    android安卓app如何彻底结束进程. 光调用finish()是结束不了程序的,程序中的线程依旧在后台运行.zip

    同时,对于使用`Handler`或`ExecutorService`创建的线程池,记得调用`removeCallbacksAndMessages(null)`或`shutdownNow()`。 6. **利用 FLAG_ACTIVITY_CLEAR_TASK 和 FLAG_ACTIVITY_NEW_TASK**: 在启动新...

    Java 判断线程池所有任务是否执行完毕的操作

    在这里,我们使用一个 while 循环来判断线程池的状态,如果线程池已经终止,则打印 "结束了! 在上面的代码中,我们还使用了 `Thread.sleep(200)` 方法,以避免过多的判断浪费资源。这个参数越小,延迟越小,结果越...

    LINUXC线程池.pdf

    Linux C线程池是一种多线程编程技术,它通过维护一定数量的工作线程,并利用这些线程来执行提交给线程池的任务,可以提高程序的性能和资源利用率。在给定的文件内容中,展示了如何使用C语言在Linux环境下创建一个...

    100行Java代码构建一个线程池[借鉴].pdf

    线程池是现代操作系统中一种高效的资源管理方式,它允许应用程序预先创建一定数量的线程并保持待命状态。线程池的出现是为了解决频繁创建和销毁线程带来的性能开销,特别是对于并发请求高的应用,如服务器端处理大量...

    Java判断线程池线程是否执行完毕

    Java判断线程池线程是否执行完毕 Java判断线程池线程是否执行完毕是Java多线程编程中的一种常见问题,当我们使用线程池来执行多个任务时,需要判断所有的子线程是否已经执行完毕,以便进行后续操作。下面我们将介绍...

    java线程和线程池的使用.docx

    - **用户线程(User Thread)**:用户线程是程序的主要工作线程,只要至少有一个用户线程还在运行,程序就不会终止。 3. 线程池的使用: Java 提供了 `java.util.concurrent` 包中的 `ExecutorService` 和 `...

    java线程池

    1. **newFixedThreadPool**:创建一个固定大小的线程池,线程数固定且不变,如果线程池中的线程因执行异常而结束,那么线程池会补充一个新的线程。 2. **newCachedThreadPool**:创建一个可缓存线程池,如果线程池...

    Java concurrency线程池之线程池原理(三)_动力节点Java学院整理

    线程池同样也有五种状态,但是它们与线程状态不同,线程池的状态包括: 1. **RUNNING**:线程池运行状态,能够接受新任务并处理队列中的任务。这是线程池的初始状态,当创建线程池后,它会自动设置为RUNNING。 2. ...

    高并发编程,高并发编程,高并发编程

    * ExecutorService接口是Java中的线程池接口,提供了shutdown()和isTerminated()方法。 * AbstractExecutorService是Java中的抽象线程池类,提供了execute()和submit()方法的默认实现。 七、高并发编程的其他知识点...

    Java 线程池原理深入分析

    6. 关闭线程池:调用ExecutorService的shutdown或shutdownNow方法,线程池会停止接收新的任务,正在执行的任务会继续执行完毕,然后线程池进入关闭状态。线程池参数配置线程池的参数配置至关重要,主要涉及以下四个...

Global site tag (gtag.js) - Google Analytics