如何通过四种不同方法构建一个高效的线程池?
- 内容介绍
- 文章标签
- 相关推荐
本文共计372个文字,预计阅读时间需要2分钟。
javanewCachedThreadPool(): 创建可缓存线程池,根据需要创建线程,重用以前创建的线程。newFixedThreadPool(): 创建固定大小线程池,线程可重用。newScheduledThreadPool(): 创建一个线程池,用于安排在给定延迟后运行或定期执行任务。public stat(): 公共状态信息。
newCachedThreadPool
创建可缓存的线程池,根据需要创建,以前存在重用他们
newFixedThreadPool
创建固定的线程池,可重用
newScheduledThredPool
创建一个线程池,安排计划执行(定期)
public static void main(String[] args) {
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
scheduledThreadPool.schedule(new Runnable() {
@Override
public void run() {
System.out.println("等3秒");
}
}, 3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("延迟一秒后每三秒执行一次");
}
}, 1, 3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(() -> {
System.out.println("===============");
}, 1, 3, TimeUnit.SECONDS);
}
结果
延迟一秒后每三秒执行一次
===============
等3秒
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
newSingleThreadExecutor
单例执行,这个线程池只有一个线程,这个线程可以在线程异常后重启一个线程替代原来线程继续去执行
本文共计372个文字,预计阅读时间需要2分钟。
javanewCachedThreadPool(): 创建可缓存线程池,根据需要创建线程,重用以前创建的线程。newFixedThreadPool(): 创建固定大小线程池,线程可重用。newScheduledThreadPool(): 创建一个线程池,用于安排在给定延迟后运行或定期执行任务。public stat(): 公共状态信息。
newCachedThreadPool
创建可缓存的线程池,根据需要创建,以前存在重用他们
newFixedThreadPool
创建固定的线程池,可重用
newScheduledThredPool
创建一个线程池,安排计划执行(定期)
public static void main(String[] args) {
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
scheduledThreadPool.schedule(new Runnable() {
@Override
public void run() {
System.out.println("等3秒");
}
}, 3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("延迟一秒后每三秒执行一次");
}
}, 1, 3, TimeUnit.SECONDS);
scheduledThreadPool.scheduleAtFixedRate(() -> {
System.out.println("===============");
}, 1, 3, TimeUnit.SECONDS);
}
结果
延迟一秒后每三秒执行一次
===============
等3秒
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
延迟一秒后每三秒执行一次
===============
newSingleThreadExecutor
单例执行,这个线程池只有一个线程,这个线程可以在线程异常后重启一个线程替代原来线程继续去执行

