一 使用原因
每次使用完线程都要等待GC回收,但是GC自动回收得等到内存快满的时候,在这之前线程一直在占用内存.
二 线程的作用
1,管理线程的创建
2,线程的复用
3,线程的销毁
注意:线程池可以简单理解为存储线程的容器,也就是管理线程的类
三 体系
Executor(接口)
方法:execute(Runnable command);
作用:执行线程任务
ExecutorService(子接口)
方法:shutdown();
作用:关闭线程池
boolean isShutdown();
作用:判断线程池是否关闭
submit(Runable task);
作用:提交线程任务
ScheduledExecutorService(子接口)
scheduleAtFixedRate(Runnable command,long initialDelay,long period,TimeUnit unit);
参数一:线程任务 参数二:延迟时间 参数三间隔时间 参数四:时间单位
注意:此处间隔时间指的是第二次任务开始时间减去第一次任务开始时间
如果第一次任务执行时间大于间隔时间,那么第一次任务结束就会马上开始第二次任务,中间将不再间隔!
scheduleWithFixedDelay(Runnable command,long initialDelay,long delay,TimeUnit unit);
参数一:线程任务 参数二:延迟时间 参数三间隔时间 参数四:时间单位
注意:此处间隔时间指的是第二次任务开始时间减去第一次任务结束时间
因此,本次就算第一次任务执行时间大于间隔时间也不影响
ThreadPoolExecutor(子类)
四 Executors
1,作用 创建线程池对象
2,方法
<1>创建可变线程池(线程数量不固定)
static ExecutorService newCachedThreadPool()
<2>创建固定线程池(线程数量固定)
static ExecutorService newFixedThreadPool(int nThreads)
参数:线程数量
<3>创建单例线程池(其中只有一个线程)
static ExecutorService newSingleThreadExecutor()
<4>创建调度线程池
static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
参数:线程池中线程数量
<5>创建单例调度线程池
static ScheduledExecutorService newSingleThreadScheduledExecutor()
五 线程池的使用
步骤
1.创建线程池
2.执行线程任务
3.关闭线程池
线程池的学习(感觉人不好了)
最新推荐文章于 2024-09-09 15:46:54 发布