java怎么启动线程池?java启动线程的方法

我们在学习软件开发时,多线程,高并发是一个必不可少的知识点,也是在面试时必会问到的内容。最近有小伙伴询问java怎么启动线程池?本篇来统一解答一下java启动线程的方法。

java怎么启动线程池?

Java中创建线程有四种方式,我们下面依次介绍一下。

1、继承 Thread 类

(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。

(2)创建Thread子类的实例对象,即创建了一个线程对象。

(3)调用该线程对象的start()方法来启动该线程。

2、实现Runnable接口

(1)定义Runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体。

(2)创建 Runnable实现类的实例对象,并将该实例作为Thread的target来创建一个Thread对象,该Thread对象才是真正的线程运行对象。

(3)调用该线程对象的start()方法来启动线程。

3、实现Callable接口

(1)创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。

(2)创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

(3)使用FutureTask对象作为Thread对象的target创建并启动新线程。

(4)调用FutureTask对象的get()方法来获得子线程执行结束后的返回值。

4、线程池Java默认提供了五种线程池,通过Executors创建,分别为:

(1)「newCachedThreadPool」 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。

(2)「newFixedThreadPool」 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

(3)「newScheduledThreadPool」 创建一个定长线程池,支持定时及周期性任务执行。

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

(5)「newWorkStealingPool」 创建一个具有抢占式操作的线程池,由于能够合理的使用CPU进行对任务操作(并行操作),所以适合使用在很耗时的任务中。

文末附免费下载方式

(一). 基础

1、Java 基本功

    Java 入门(基础概念与常识) Java 语法 基本数据类型 方法(函数)

2、Java 面向对象

    类和对象 面向对象三大特征 修饰符 接口和抽象类 其它重要知识点

3、Java 核心技术

    集合 异常 多线程 文件与 IO 流

(二). 并发

1、并发容器

    JDK 提供的并发容器总结 ConcurrentHashMap CopyOnWriteArrayList ConcurrentLinkedQueue BlockingQueue ConcurrentSkipListMap

2、线程池

    使用线程池的好处 Executor 框架 (重要)ThreadPoolExecutor 类简单介绍 (重要)ThreadPoolExecutor 使用示例 几种常见的线程池详解 ScheduledThreadPoolExecutor 详解 线程池大小确定

3、乐观锁与悲观锁

    何谓悲观锁与乐观锁 乐观锁常见的两种实现方式 乐观锁的缺点 CAS与synchronized的使用情景

(三). JVM

1、Java内存区域

    概述 运行时数据区域 HotSpot 虚拟机对象探秘 重点补充内容

2、JVM垃圾回收

    揭开 JVM 内存分配与回收的神秘面纱 对象已经死亡? 垃圾收集算法 垃圾收集器

3、JDK 监控和故障处理工具

    JDK 命令行工具 JDK 可视化分析工具

(四)网络、linux、数据结构与算法、数据库、系统设计、必会工具、面试指南

因为篇幅有限,其他内容就不一一展示了,这本进阶笔记总共有512页。对于想要进阶的小伙伴来说应该会很有帮助,希望也能帮助到你。

经验分享 程序员 微信小程序 职场和发展