5.Java并发编程—JUC线程池架构

JUC线程池架构

在Java开发中,线程的创建和销毁对系统性能有一定的开销,需要JVM和操作系统的配合完成大量的工作。

  1. JVM对线程的创建和销毁:
    • 线程的创建需要JVM分配内存、初始化线程栈和线程上下文等资源,这些操作会带来一定的时间和内存开销。
    • JVM需要通过与操作系统的交互进行系统调用,涉及到资源分配、权限检查等操作。
    • 线程的销毁需要释放已分配的内存和其他系统资源,这也需要一定的开销。
  2. 操作系统对线程的管理:
    • 操作系统在内核层面管理线程,每个线程都需要占用操作系统的资源,包括内存、CPU时间片、线程调度等。
    • 创建和销毁线程涉及到操作系统的系统调用,如创建线程栈、设置线程上下文、更新线程调度信息等。
    • 过多的线程会增加操作系统的负担,导致资源竞争和上下文切换的开销增加。

为了减少这些开销,Java引入了线程池的概念。线程池可以预先创建一定数量的线程,并重用这些线程来处理任务,从而减少线程的创建和销毁频率,提高系统的性能和效率。

使用线程池的主要优势包括:

  • 减少线程创建和销毁的开销:线程池在应用启动时创建一定数量的线程,并将它们保存在池中,避免了频繁的创建和销毁操作。
  • 线程重用:线程池可以重用线程来执行多个任务,避免了反复创建线程的开销。
  • 动态调整线程数量:线程池可以根据任务负载情况动态调整线程数量,提高系统的处理能力和响应性能。
  • 管理和监控线程:线程池提供管理和监控线程的功能,可以设置线程的优先级、超时时间等,提供更好的线程控制和调优能力。

1.JUC线程池架构

在多线程编程中,任务都是一些经过抽象的工作单元,而线程就是让任务异步执行的基本机制。随着我们应用开发的扩张,线程和任务的管理也开始变得非常复杂,为了简化这些复杂的线程管理,这个时候就需要一个“管理者”,来统一管理线程及任务分配,这个就是线程池。

有关线程池接口 和 类的架构图大致如下

Executor结构-1

Executor(执行任务)

Executor是Java异步目标任务的执行者接口,其目的就是来执行目标任务。Executor通过execute()接口来执行已经提交的Runnable目标实例。其目的就是将任务执行者任务提交者分离开来。

Executor框架的主要目的是将任务的提交和执行进行解耦,将任务的创建和执行逻辑分离开来。通过使用Executor框架,可以将任务的提交和执行过程进行灵活管理,并提供了一些常用的线程池实现,简化了多线程编程的复杂性。

它只包含了一个方法

public interface Executor {
   

    /**
     * Executes the given command at some time in the future.  The command
     * may execute in a new thread, in a pooled thread, or in the calling
     * thread, at the discretion of the {@code Executor} implementation.
     *
     * @param command the runnable task
     * @throws RejectedExecutionException if this task cannot be
     * accepted for execution
     * @throws NullPointerException if command is null
     */
    void execute(Runnable command);
}

ExecutorService(提交任务)

ExecutorService继承Executor。他是Java中异步目标任务的执行者服务接口对外提供异步任务的接收服务。ExecutorService对外提供了接收异步任务并转发给执行者的方法,例如submit系列方法,invoke系列方法等。

// 向线程池提交单个任务
<T> Future<T> submit(Callable<T> task);
<T> Future<</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值