前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础知识(十三)--线程池

Java基础知识(十三)--线程池

作者头像
用户7386338
发布2021-06-22 18:32:18
2000
发布2021-06-22 18:32:18
举报
文章被收录于专栏:Java患者Java患者

线程池

线程池的概述

  • 程序启动一个新线程成本是比较高的,因为它涉及到要与操作系统进行交互.而使用线程池可以很好的提高性能,尤其是当程序中要创建大量生存期很短的线程时,更应该考虑使用线程池.线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用.在JDK5之前,我们必须手动实现自己的线程池,从JDK5开始,java内置支持线程池
  • 内置线程池的使用步骤
    • 创建线程池对象
    • 创建Runnable实例
    • 提交Runnable实例
    • 关闭线程池
代码语言:javascript
复制
// public static ExecutorService newFixedThreadPool(int nThreads)
ExecutorService pool = Executors.newFixedThreadPool(2);

// 可以执行Runnable对象或者Callable对象代表的线程
pool.submit(new MyRunnable());
pool.submit(new MyRunnable());

//结束线程池
pool.shutdown();
代码语言:javascript
复制
 多线程程序实现的方式3
代码语言:javascript
复制
// 创建线程池对象
ExecutorService pool = Executors.newFixedThreadPool(2);

// 可以执行Runnable对象或者Callable对象代表的线程
Future<Integer> f1 = pool.submit(new MyCallable(100));
Future<Integer> f2 = pool.submit(new MyCallable(200));

// V get()
Integer i1 = f1.get();
Integer i2 = f2.get();

System.out.println(i1);
System.out.println(i2);

// 结束
pool.shutdown();

public class MyCallable implements Callable<Integer> {

  private int number;

  public MyCallable(int number) {
    this.number = number;
  }

  @Override
  public Integer call() throws Exception {
    int sum = 0;
    for (int x = 1; x <= number; x++) {
      sum += x;
    }
    return sum;
  }

}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线程池
    • 线程池的概述
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档