Java线程池入门04
1. 提交任务的两种方式
executorsubmit
2. executor
executor位于Executor接口中
public interface Executor {void executor(Runnable command);
}
executor提交的是无返回值的任务
下面是一个具体的例子
package LearnThreadPool; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; /** * 使用executor * * @author cat * @version 2025/2/25 11:13 * @since JDK17 */
public class UseExecutor { public static void m() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { ExecutorService executorService = Executors.newSingleThreadExecutor(); executorService.execute(UseExecutor::m); executorService.shutdown(); }
}
输出 :
pool-1-thread-1
3. submit
submit位于ExecutorService接口中
public interface ExecutorService {<T> Future<T> submit(Callable<T> task); <T> Future<T> submit(Runnable task, T result); Future<?> submit(Runnable task);
}
![![[Pasted image 20250225111703.png]]](https://i-blog.csdnimg.cn/direct/2d484a57738e427c95799c8b208a6481.png)
Future也是一个接口,该接口定义了与任务执行结果相关的功能。
public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;
}
5个方法的相关功能
![![[Pasted image 20250225111944.png]]](https://i-blog.csdnimg.cn/direct/1af15eb82f114d57ad679d8bd2c78ecc.png)
下面是一个使用submit的具体例子
package LearnThreadPool; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future; /** * 使用submit * * @author cat * @version 2025/2/25 11:27 * @since JDK17 */
public class UseSubmit { private static ExecutorService executorService = Executors.newSingleThreadExecutor(); // 该方法可以实现Runnable接口 public static void m1() { System.out.println("曲·启明"); } public static void test01() { Future<?> future = executorService.submit(UseSubmit::m1); try { Object object = future.get(); System.out.println(object); // null } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } } public static void test02() { Future<String> submit = executorService.submit(UseSubmit::m1, "任务完成"); try { String string = submit.get(); System.out.println(string); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } } // 该方法可以实现Callable<String>接口 public static String m2() { return "曲·启明" + " 露西亚·誓焰"; } public static void test03() { Future<String> submit = executorService.submit(UseSubmit::m2); try { String string = submit.get(); System.out.println(string); } catch (InterruptedException e) { throw new RuntimeException(e); } catch (ExecutionException e) { throw new RuntimeException(e); } } public static void main(String[] args) { test01(); System.out.println("---------------------------"); test02(); System.out.println("---------------------------"); test03(); executorService.shutdown(); }
}
4. Executor和Submit的区别
![![[Pasted image 20250225113831.png]]](https://i-blog.csdnimg.cn/direct/52c26b7375b94fad8dc17ec5aa455a22.png)
相关文章:
Java线程池入门04
1. 提交任务的两种方式 executorsubmit 2. executor executor位于Executor接口中 public interface Executor {void executor(Runnable command); }executor提交的是无返回值的任务 下面是一个具体的例子 package LearnThreadPool; import java.util.concurrent.ExecutorSe…...
【论文笔记-ECCV 2024】AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品
AnyControl:使用文本到图像生成的多功能控件创建您的艺术作品 图1 AnyControl的多控制图像合成。该研究的模型支持多个控制信号的自由组合,并生成与每个输入对齐的和谐结果。输入到模型中的输入控制信号以组合图像显示,以实现更好的可视化。 …...
计算机毕业设计 ——jspssm519Springboot 的幼儿园管理系统
作者:程序媛9688 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题)…...
山东大学软件学院人工智能导论实验之知识库推理
目录 实验目的: 实验代码: 实验内容: 实验结果 实验目的: 输入相应的条件,根据知识库推理得出相应的知识。 实验代码: def find_data(input_process_data_list):for epoch, data_process in enumerat…...
【Uniapp-Vue3】点击将内容复制到剪切板
具体使用方法在官网: uni-app官网https://uniapp.dcloud.net.cn/api/system/clipboard.html大致使用方法如下: // value是需要复制的值 function copyValue (value) { uni.setClipboardData({data: value,success: res>{// 复制成功逻辑},fail:err&…...
英伟达 Isaac Sim仿真平台体验【2】
一、产品基础信息 仿真平台:NVIDIA Isaac Sim 4.1.0硬件配置:NVIDIA RTX 4090 2 (24GB显存)核心特性: Omniverse内核的多GPU物理加速原生PyTorch/TensorFlow集成支持基于USD的场景构建体系 二、GPU加速仿真实战 ▶ 多球体跌落测试 操作步…...
低代码与开发框架的一些整合[3]
1.基本说明 审批流程是企业内部运营的运行流程,与业务板块进行关联,在企业数智化过程中启动业务串联的作用,与AI业务模型及业务agent整合后,将大大提升企业的运行效率以及降低运营风险。 近期对开源的近40个携带流程平台的项目进…...
deepseek-r1-centos-本地服务器配置方法
参考: 纯小白 Centos 部署DeepSeek指南_centos部署deepseek-CSDN博客 https://blog.csdn.net/xingxin550/article/details/145574080 手把手教大家如何在Centos7系统中安装Deepseek,一文搞定_centos部署deepseek-CSDN博客 https://blog.csdn.net/soso67…...
C语言实现通讯录项目
一、通讯录功能 实现一个可以存放100个人的信息的通讯录(这里采用静态版本),每个人的信息有姓名、性别、年龄、电话、地址等。 通讯录可以执行的操作有添加联系人信息、删除指定联系人、查找指定联系人信息、修改指定联系人信息、显示联系人信…...
Effective Java读书笔记 draft
一、创建和销毁对象 1、静态工厂方法代替构造器 class Person{//构造器public Person(){}//静态工厂方法public static Person getInstance(){return new Person();} } 优势:1、有名字,代码更容易阅读理解;2、不用每次被调用时都创建新对…...
DeepSeek 助力 Vue 开发:打造丝滑的滑块(Slider)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
wordpress使用CorePress主题设置项总结
宝塔面板设置 软件商店中安装的软件有:(宝塔网站加速3.1)(Nginx 1.18.0)(MySql 5.6.50)(PHP-5.6)(phpMyAdmin 4.4)(Python项目管理器 …...
逆向pyinstaller打包的exe软件,获取python源码(6)
在ailx10:逆向pyinstaller打包的exe软件,获取python源码(3)中,我们逆向出了主程序,但是对其依赖的其他python文件并没有给出逆向方法,实际上非常简单,在PYZ-00.pyz_extracted 文件夹中,只要逆向…...
蓝桥杯 五子棋对弈
五子棋对弈 问题描述 “在五子棋的对弈中,友谊的小船说翻就翻?” 不!对小蓝和小桥来说,五子棋不仅是棋盘上的较量,更是心与心之间的沟通。这两位挚友秉承着"友谊第一,比赛第二"的宗旨ÿ…...
【单片机】MSP430MSP432入门
文章目录 0 前言1 开发方式选择2 CCS和开发相关软件3 Keil开发MSP4324 IAR for 430开发MSP4305 总结 0 前言 最近因为想学DSP,所以把之前卸载的CCS给装回来了,手头也还有之前电赛剩下的MSP430和MSP432的板子,由于年代久远,想着花点…...
货车一键启动无钥匙进入手机远程启动的正确使用方法
一、移动管家货车无钥匙进入系统的使用方法 基本原理:无钥匙进入系统通常采用RFID无线射频技术和车辆身份识别码识别系统。车钥匙需要随身携带,当车钥匙靠近货车时,它会自动与货车的解码器匹配。开门操作:当靠近货车后࿰…...
自学c++之类、对象、封装
class 类名{int a;//属性 public://权限操作; } 1、权限 public(公共权限)类内可以访问,类外可以访问protected(保护权限)类内可以访问,类外不可以访问(儿子可以访问父亲中的保护内容…...
在VSCode中安装jupyter跑.ipynb格式文件
个人用vs用的较多,不习惯在浏览器单独打开jupyter,看着不舒服,直接上教程。 1、在你的环境中pip install ipykernel 2、在vscode的插件中安装jupyter扩展 3、安装扩展后,打开一个ipynb文件,并且在页面右上角配置内核 …...
SQL_优化
1 SQL优化 (1) 数据读取 ①分区裁剪:使用时只读取需要的分区. ②列裁剪:读取操作(select、where、join、group by、sort by等),不读取不需要的列,减少IO消耗. (2) 数据筛选 ①分区先过滤,区分度大的字段先过滤. ②不在筛选字段上使用函数和表达式. (3) 分组聚合 ①使用窗口函数…...
Neo4j使用neo4j-admin导入csv数据方法
在neo4j desktop里创建project,创建dbms,创建database。 将csv文件放入如下import路径中,然后就可以使用相对路径来使用csv了。 在neo4j desktop中打开Terminal 键入导入数据语句: neo4j-admin database import full --nodes&qu…...
redis数据库基础学习
关系型数据库关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。Sql语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据…...
Redis RDB和AOF深入比较
Redis RDB 和 AOF 深入比较 Redis 的持久化机制是其作为内存数据库能够保证数据安全的关键。RDB 和 AOF 是两种核心方案,它们在原理、性能、数据安全性等方面有着本质区别。本文将深入剖析这两种机制,并给出生产环境的选型建议。 一、核心原理对比 1.1 RDB(Redis Database…...
GitHub下载的PyTorch包怎么手动安装?以thop为例,解决pip install失败问题
GitHub下载的PyTorch包手动安装全指南:以thop为例解决pip安装失败 遇到PyTorch生态工具包安装失败时,手动从GitHub源码安装往往是最高效的解决方案。本文将手把手带你完成从源码下载到环境配置的全流程,特别针对thop这类PyTorch扩展包的典型安…...
如何免费获取八大网盘直链下载地址:LinkSwift完全使用指南
如何免费获取八大网盘直链下载地址:LinkSwift完全使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / …...
Linux线程(二): 线程控制之创建
一、线程相关概念知识补充1.1 提升检索的方法:TLBCPU给MMU传虚拟地址,MMU去问TLB有没有 !TLB全称为转移后备缓冲器,也俗称快表,是集成在CPU内的一段存储空间,它与MMU紧密协同工作。其核心作用是缓存虚拟地址…...
Lingyuxiu MXJ LoRA进阶教程:负面Prompt强化NSFW过滤与画质提升方法
Lingyuxiu MXJ LoRA进阶教程:负面Prompt强化NSFW过滤与画质提升方法 1. 引言:从“能用”到“好用”的关键一步 如果你已经成功部署了Lingyuxiu MXJ LoRA创作引擎,并且用它生成了一些人像作品,那么恭喜你,你已经迈出了…...
组播路由协议实战解析——从SPT到RPT的路径优化
1. 组播路由协议的核心挑战 第一次接触组播路由协议时,我被它独特的转发机制深深吸引。与单播路由不同,组播需要解决"一对多"的转发难题——就像快递员要给同一个小区的100户人家送同一份报纸,最笨的方法是送100次,而聪…...
实时手机检测-通用模型部署案例:中小企业视觉质检系统低成本集成方案
实时手机检测-通用模型部署案例:中小企业视觉质检系统低成本集成方案 1. 引言 想象一下,你是一家电子产品制造企业的质检主管。每天,成千上万的手机从生产线上下来,每一台都需要人工检查外观是否有划痕、屏幕是否有亮点、边框是…...
计算机网络知识应用:优化Qwen-Image-Edit-F2P API的高并发访问架构
计算机网络知识应用:优化Qwen-Image-Edit-F2P API的高并发访问架构 想象一下,你刚部署好一个功能强大的Qwen-Image-Edit-F2P API服务,它能智能地编辑图片,比如换个背景、美化人像。一开始用户不多,一切运行顺畅。但突…...
文墨共鸣大模型Agent智能体开发入门:构建自主任务执行系统
文墨共鸣大模型Agent智能体开发入门:构建自主任务执行系统 你是不是也经常被各种重复、琐碎的任务搞得焦头烂额?比如,每天要手动整理几十份报告,或者需要不停地在不同网站间切换查询信息。有没有一种方法,能让一个“数…...
