写点什么

Java 四种线程池

  • 2022 年 5 月 13 日
  • 本文字数:893 字

    阅读完需:约 3 分钟

}


Executors.newFixedThreadPool(int threadNum)


定长线程池,超出队列的任务进入排队等待。定长线程池的大小最好根据系统资源进行设置。如 Runtime.getRuntime().availableProcessors()。


ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);


for (int i = 0; i < 10; i++) {


final int index = i;


fixedThreadPool.execute(new Runnable() {


@Override


public void run() {


try {


System.out.println(index);


Thread.sleep(2000);


} catch (InterruptedException e) {


// TODO Auto-generated catch block


e.printStackTrace();


}


}


});


}


Executors.newScheduledThreadPool(int threadNum)


定长线程池,支持定时及周期性任务执行。


延迟 3s:


ScheduledExec 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 utorService scheduledThreadPool = Executors.newScheduledThreadPool(5);


scheduledThreadPool.schedule(new Runnable() {


@Override


public void run() {


System.out.println("delay 3 seconds");


}


}, 3, TimeUnit.SECONDS);


1s 后每 3s 执行一次:


scheduledThreadPool.scheduleAtFixedRate(new Runnable() {


@Override


public void run() {


System.out.println("delay 1 seconds, and excute every 3 seconds");


}


}, 1, 3, TimeUnit.SECONDS);


TimeUnit:


TimeUnit.DAYS; //天


TimeUnit.HOURS; //小时


TimeUnit.MINUTES; //分钟


TimeUnit.SECONDS; //秒


TimeUnit.MILLISECONDS; //毫秒


TimeUnit.MICROSECONDS; //微妙


TimeUnit.NANOSECONDS; //纳秒


Executors.newSingleThreadExecutor


单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。


ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();


for (int i = 0; i < 10; i++) {


final int index = i;


singleThreadExecutor.execute(new Runnable() {


@Override


public void run() {


try {


System.out.println(index);


Thread.sleep(2000);


} catch (InterruptedException e) {

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
Java 四种线程池_Java_爱好编程进阶_InfoQ写作社区