【java】scala ExecutorService停止线程池的简单案例

embedded/2024/9/22 12:41:19/

上代码:

scala">import org.scalatest.funsuite.AnyFunSuite
import java.util.concurrent.{ExecutorService, Executors, TimeUnit}class ExecutorPoolTest extends AnyFunSuite {val threadPool: ExecutorService = Executors.newFixedThreadPool(1)val job: Runnable = new Runnable {@volatile var stop = falseoverride def run(): Unit = {while (!stop) {try {println(s"Runnable is working, ${System.currentTimeMillis()}")Thread.sleep(1000)} catch {case i: InterruptedException => {println("Runnable encounter interrupt!")stop = true}case other =>}}}}def stopPool():Unit={println("ready to shutdown thread pool!")threadPool.shutdown()if (!threadPool.awaitTermination(10, TimeUnit.SECONDS)) {println("ready to force shutting down thread pool!")threadPool.shutdownNow()}}test("test-shutdown") {threadPool.execute(job)Thread.sleep(5000)stopPool()while (true) {println("main thread is still running!")Thread.sleep(3000)}}
}

参考文章:

如何优雅的停止线程(池)
如何优雅地停止一个线程?
ExecutorService 线程池详解
ExecutorsService.submit详解
ExecutorService的invokeAll方法详解


http://www.ppmy.cn/embedded/113495.html

相关文章

linux-Linux 内核与模块管理-内核基础

Linux 内核是操作系统的核心,它负责管理硬件资源和提供系统调用接口供用户程序使用。Linux 内核的设计极为灵活和模块化,它允许开发者通过加载和卸载模块来动态地扩展内核的功能。 一、Linux 内核概述 1.1 内核的基本功能 Linux 内核的主要功能可以分…

技术成神之路:设计模式(十三)访问者模式

介绍 访问者模式(Visitor Pattern)是一种行为型设计模式,它允许你在不改变对象结构的前提下,定义作用于这些对象的新操作。这种模式通过将操作逻辑从对象结构中抽离出来,使得新的操作可以无缝地添加到现有对象中。 1.定…

Unity URP APK打包物体不渲染问题

在测试Shader性能的时候,打包到真机上测试是不可少的。但在一次打包APK时安装,打开程序竟然发现本应该生成的物体都不渲染了,但是在Debug的输出UI上确确实实生成了固定数量的物体,而它们的MeshRender却没有任何渲染,但…

TASK-CUSTOMIZEDMASKED AUTOENCODERVIA MIXTURE OF CLUSTER-CONDITIONAL EXPERTS

发表于:ICLR 2023 notable top 25%(相当于spotlight) 推荐指数: #paper/⭐⭐⭐ 论文链接: Task-customized Masked Autoencoder via Mixture of Cluster-conditional Experts | OpenReview poster链接:ICLR 2023 Task-customized Masked Auto…

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目: 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

ODrive学习——添加485编码器支持

系列文章目录 文章目录 系列文章目录前言一、端口处理二、在Encoder中引入新的类型1.增加485类型2.增加串口的初始化操作3.数据处理 总结 前言 尝试在ODrive中添加485型的编码器的支持 一、端口处理 计划使用PA2及PA3作为485通信的端口。这样首先要把外部温度传感器的I/O口给…

JavaSE - 面向对象编程03

01 多态 01_01 认识多态 01_02 多态的好处和缺点 【1】好处:① 可以解耦合,扩展性更强,父类引用指向的子类对象可以随时切换,而后面的逻辑代码并不需要更改。 ② 使用父类引用可以作为方法的形参或返回类型来接收一切子类对象。…

CTFHub技能树-信息泄露-HG泄漏

目录 漏洞产生原因 解题过程 当开发人员使用 Mercurial 进行版本控制,对站点自动部署。如果配置不当,可能会将.hg 文件夹直接部署到线上环境。这就引起了 hg 泄露漏洞。 漏洞产生原因 Mercurial(hg)是一种分布式版本控制系统,它与Git类似也可以用于管…