核心线程与非核心线程
时间: 2023-12-29 19:24:58 浏览: 121
线程池中的核心线程和非核心线程是指线程池中的两种不同的线程。核心线程是指在线程池中一直存在的线程,即使它们没有任务可以执行。而非核心线程则是指在线程池中只有在需要执行任务时才会创建的线程,并且在一定时间内没有任务可执行时会被销毁。
线程池中的核心线程和非核心线程的区分是通过线程池的参数来实现的。线程池中有两个参数,分别是corePoolSize和maximumPoolSize。其中corePoolSize表示线程池中的核心线程数,maximumPoolSize表示线程池中最大的线程数。当线程池中的任务数小于corePoolSize时,线程池会创建新的线程来执行任务。当线程池中的任务数大于corePoolSize时,线程池会将任务放入任务队列中等待执行。当任务队列已满且线程池中的线程数小于maximumPoolSize时,线程池会创建新的线程来执行任务。当线程池中的线程数达到maximumPoolSize时,线程池会拒绝执行新的任务。
需要注意的是,非核心线程在一定时间内没有任务可执行时会被销毁,这个时间是通过线程池的keepAliveTime参数来控制的。如果线程池中的线程数大于corePoolSize,且有线程空闲时间超过keepAliveTime,那么这些线程就会被销毁,直到线程池中的线程数不大于corePoolSize为止。
阅读全文