专栏首页Java患者Java基础知识(十三)--线程池

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

线程池

线程池的概述

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

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

//结束线程池
pool.shutdown();
 多线程程序实现的方式3
// 创建线程池对象
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;
  }

}

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java基础知识(十)--多线程

    用户7386338
  • Java基础知识(十一)--多线程

    用户7386338
  • Java基础知识(十二)--多线程通信

    用户7386338
  • 学习Java基础知识,打通面试关~十五线程池学习

    用户2196435
  • Java知识点——线程池

    我们在之前的线程学习中,都是之间创建新的线程,显性线程,用的时候开启,用完销毁,效率低且不安全 而且我们看到在阿里巴巴代码规范规约中也是不建议显式创建线程,建...

    用户7073689
  • Java基础--线程池

    我们知道,操作系统创建线程、切换线程状态、终结线程都要进行CPU调度--这是一个耗费时间和系统资源的事情。服务端应用程序例如web应用中,比较常见的情况是:每当...

    河岸飞流
  • 学习Java基础知识,打通面试关~十六自定义线程池

    用户2196435
  • Java基础知识(三)

    用户7386338
  • 【多线程】线程池基本知识

    上篇文章讲了下线程的创建及一些常用的方法,但是在使用的时候,大多数是采用了线程池来管理线程的创建,运行,销毁等过程。本篇将着重讲线程池的基础内容,包括通过线程池...

    用户8902830
  • Java多线程通关———基础知识

    1 线程:进程中负责程序执行的执行单元 线程本身依靠程序进行运行 线程是程序中的顺序控制流,只能使用分配给程序的资源和环境

    后端码匠
  • Java之线程池知识整理

    优点:客户端支持多端登录,且能设置权限访问,多端登录可同步笔记,允许存储文档,文字,图片

    疯狂的KK
  • 多线程基础(十三):java中的FutureTask

    可以看到,FutrueTask实现了RunnableFuture接口,而RunnableFuture接口又继承了Future和Runnable。如下图:

    冬天里的懒猫
  • JAVA多线程并发的基础知识

    并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写...

    用户5640963
  • java基础|自定义java线程池

    在创建线程的各种方式中我们有讲到过通过创建线程池来完成异步操作,但实际上jdk提供的Executors来创建线程池都还有些缺陷,线程池有以下几个参数: 代码节选...

    微笑的小小刀
  • Java 线程基本知识

    线程 线程和进程 进程 : 进程指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。 线程 ...

    李家酒馆酒保
  • Java基础-多线程(三)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Java中的小知识——线程池补充

    但是我只说了一种创建线程池对象的方法 public static ExecutorService newFixedThreadPool(int nThread...

    用户7073689
  • 寒冬也挡不住进大厂的决心,Android面试完整知识架构,面试需要掌握的都在这里!

    年年寒冬,年年也挡不住一个Android程序员追求大厂的决心。想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构。整体包括Java、...

    Android技术干货分享
  • 线程基础知识归纳

    初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):处于可运行状态的线程正在JVM中执行,但它可能正在等待来自操...

    Dream城堡

扫码关注云+社区

领取腾讯云代金券