JUC学习笔记(10)—线程池

JUC线程框架深度解析 — 01、JUC基础使用 一、JUC开发包简介【 java.util.concurrent开发包 】➣ 传统线程编程模型之中为防止死锁等现象的出现(wait()、notify()、   synchronized)时往往会考虑性能、公平性、资源管理等问题,这样加重了程序开发人员的负担;➣ Java5.0添加了一个新的java.util.concurrent开发包(简称JUC)。   利用此包进行的多线程编程将有效的减少竞争条... 阅读详情
public class ExecutorsDemo
{
	public static void main(String[] args)
	{
		ScheduledExecutorService service = Executors.newScheduledThreadPool(5);
		ScheduledFuture<Integer> result = null;
		try 
		{
			for (int i = 1; i <=15; i++) 
			{
				result = service.schedule(() -> {
					System.out.print(Thread.currentThread().getName());
					return new Random().nextInt(10);
				}, 2, TimeUnit.SECONDS);
				System.out.println("  ********result: "+result.get());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			service.shutdown();
		}		
	}

	public static void testThreadPool()
	{
		//ExecutorService service = Executors.newFixedThreadPool(5);//一池5线程
		//ExecutorService service = Executors.newSingleThreadExecutor();//一池1线程
		ExecutorService service = Executors.newCachedThreadPool();//一池N线程
		Future<Integer> result = null;
		
		try 
		{
			for (int i = 1; i <=15; i++) 
			{
				result = service.submit( () -> {
					Thread.sleep(400);
					System.out.print(Thread.currentThread().getName());
					return new Random().nextInt(10);
				} );
				System.out.println("  ********result: "+result.get());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			service.shutdown();
		}
	}
}

 

Java利用JUC包创建线程的三种方式 Future接口用于表示异步计算的结果,通过它可以取消任务、查询任务是否完成、获取任务的结果等。它可以用于表示一个异步计算的结果,也可以用于执行异步任务并处理任务完成后的结果。Executor框架提供了一种管理线程的高级机制,可以轻松地创建和管理线程池。通过Executor框架,可以将任务提交给线程池,线程池会负责管理线程的生命周期。// 创建一个固定大小的线程池。这些都是使用JUC包中提供的类来创建线程的方式,它们提供了更高级别的抽象和功能,能够更方便地管理线程和处理并发任务。 阅读详情

相关推荐

LTspice 导入 PSpice 模型实战指南 --(解决语法兼容性与模型优化问题)

本文提供了将PSpice模型成功导入LTspice的详细实战指南。针对两者间的语法兼容性问题,文章以TI UCC23513为例,逐步讲解模型获取、符号创建、常见语法错误修改及仿真验证方法,并分享了模型优化与个人库管理技巧,帮助用户高效解决模型导入与仿真难题。

weixin_28278377的博客 821

JUC学习:线程池

java线程池学习 线程池原理的简单理解 线程池原理和银行办理业务差不多 线程池就像银行,有需求的时候给你安排窗口办理业务,人数多了就去等待队列去等待,如果哪个窗口的人办理完业务了,等待队列里面的人就会选择该窗口进行业务办理,(有空闲窗口就会从等待队列里面选取,不会直接从外面选取)如果等到队列都满了,还有人要办理业务,就会额外开一些窗口来继续办理业务,如果全部窗口都打开了,等待队伍也满了,还有需求需要办理的话,就会执行拒绝策略,拒绝后面的需求,并执行相应的策略 开放的窗口1,2,3相当于核心线程池数量,最大

冷雨清的博客 264

不只是抓取:用五指灵巧手(ROH-A001/RH56)玩转ROS2下的力控与混合控制

本文深入探讨了在ROS2环境下使用五指灵巧手(ROH-A001/RH56)实现力控与混合控制的实战技巧。从硬件通信协议解析到ROS2节点开发,详细介绍了力感知架构、实时数据处理和混合控制策略,帮助开发者在Ubuntu系统中高效实现精密操作。通过鸡蛋抓取等实例,展示了力控技术在机器人灵巧操作中的关键作用。

weixin_28221501的博客 287

JUC学习笔记 -- (10) 线程池

为什么用线程池 创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率 例如: 记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3 如果T1+T3&gt;T2,那么是不是说开启一个线程来执行这个任务太不划算了! 正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销 线程并发数量过多,抢...

YellowStar的博客 418

Rust Reqwest+Rustls 自签名证书校验

所以这里必须保证reqwest引用的rustls库和本地工程一致。以上就是实现不校验签名的逻辑,后续自己可以在对应回调进行逻辑判断。

bawomingtian123的专栏 1356

MAS1102量产工具实战指南:从下载到开卡,附固件选择与RDT优化技巧

本文提供MAS1102量产工具的实战指南,涵盖从工具下载、短接识别到开卡操作的全过程。重点解析了固件选择策略与RDT优化技巧,帮助用户成功修复基于联芸MAS1102主控的固态硬盘,解决常见开卡错误并提升SSD性能与稳定性。

c2d3e4f的博客 2203

《尚硅谷高级技术之JUC高并发编程》学习笔记10——ThreadPool线程池

文章目录线程池简介线程池参数说明常用参数(重点)拒绝策略(重点)线程池的种类与创建入门案例线程池底层工作原理(重要)三种常用的线程池注意事项(重要)总结 线程池简介 线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。 例子: 10 年前单核 CPU 电脑,假的多线程,像马戏团小丑玩多个

weixin_43301424的博客 371

YOLOv11涨点改进| TGRS 2026 | 独家创新首发、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测、图像分割涨点

🔥本文提出了一种改进YOLOv11网络模型的STSAM协同时空注意力融合模块,用于提升高分辨率遥感变化检测的精度。STSAM通过并行处理全局跨时相注意力和局部坐标注意力,能有效聚焦真实变化目标,强化边界和结构细节。该模块包含两个分支:Cross-Attention分支通过时间嵌入增强双时相特征的时间差异,CoordAtt分支则强化局部结构细节。实验表明,STSAM能显著提升变化检测性能,同时保持训练稳定性。文章详细介绍了模块结构、原理、优势,并提供了完整的核心代码实现和配置方法,包括三种改进方案。

Ai缝合怪、助力小伙伴高效发论文 218

【JUC基础学习笔记】

JUC基础学习笔记一、JUC概述1. JUC是什么2. 进程与线程3. 并发与并行4. sleep() 和 wait()等方法二、Lock1. Synchronized2. Lock接口与方法3. 两者异同4. Lock接口重要实现类三、线程通信 / 线程同步1. Synchronized同步块2. Lock锁四、线程安全1. 阻塞同步2. 非阻塞同步3. 非同步五、集合的线程安全1. 并发集合 ArrayList2. Vector3. Collections4. JUC.CopyOnWriteList..

sixteen_16的博客 1万+

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1025

开源机器人库orocos KDL 学习笔记(二):Geometric

开源机器人库orocos KDL 学习笔记二:Geometric 如果按照上一篇搭建的VS2015 orocos KDL环境,会出现3个例程:geometry, chainiksolverpos_lma_demo, trajectory_example. 这一篇看一下geometry的例程。 在frames.hpp中,定义了这些class: - class Vector - class R

行者无疆的博客 6703

JUC学习笔记及拓展

JUC学习笔记及拓展Java JUC1 Java JUC简介2 volatile 关键字-内存可见性2.1 内存可见性2.2 volatile 关键字3 原子变量与CAS算法3.1 原子变量3.1.1 i++的原子性问题3.1.2 原子变量3.2 CAS算法3.2.1 ABA问题3.2.2 CAS在JAVA中底层的实现3.3 原子性与可见性区别4 ConcurrentHashMap4.1 锁粒度4.2 锁分段4.3 其它4.4 写入并复制5 CountDownLatch(闭锁)5.1 概念5.2 方法介绍6

yZzc_XQ的博客 3924

基于STM32设计的智能家居系统(采用ESP8266+OneNet云平台)

一、环境介绍 单片机采用:STM32F103C8T6 上网方式:采用ESP8266,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 云平台: 采用中国移动OneNet. 也可以采用腾讯、阿里云、华为云、百度天工物接入、机智云等等。 前面文章有讲解。 协议: 采用MQTT协议 开发软件:keil5 完整项目源码下载:https://download.youkuaiyun.com/download/xiaolong1126626497/19766925 二、包含的硬件与实...

1万+

JUC并发编程

JUC并发编程 JUC简介 进程、线程的关系 Java默认有两个线程 线程的六种状态 并发、并行的关系: Lock锁 Synchronized 和 Lock的区别 8锁现象 问题一 : 在标准情况下,两个线程先打印 发短信 还是 打电话 ? 问题二 : 在发短信方法中,延迟4秒,两个线程先打印 发短信 还是 打电话? 问题三 : Phone类增加一个普通方法,线程B调用,那么两个线程先打印 发短信

识时务者的个人博客 14万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

JUC全面解析-一文带你掌握JUC

本文深入解析了Java并发工具包(JUC)的核心概念和实践应用。从线程池的创建与管理到原子操作类,再到锁机制和并发集合的使用,每个部分都通过详实的讲解帮助读者全面掌握JUC的关键知识点。我们将通过对CAS机制、AQS(抽象队列同步器)、各种同步工具(如CountDownLatch、CyclicBarrier、Semaphore)、ForkJoin框架等的讲解

weixin_67796933的博客 7838

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

JUC线程池

java.util.concurrent包(简称:JUC)。JUC主要是让开发者在多线程编程中更加简单、方便一些。通过JDK内置了一些类、接口、关键字,补充完善了JDK对于并发编程支持的“短板”。(1)Executor:线程池(2)Atomic:原子操作类(3)Lock:锁(4)Tools:信号量工具类(4)并发集合:提供了线程安全的集合类。

weixin_53455615的博客 938

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JUC并发—线程池源码分析

如果线程池的线程数量 >= corePoolSize,就不会创建新的线程和执行任务,此时唯一做的事情就是通过offer()方法把任务提交到阻塞队列里进行排队。然后通过Thread的start()方法启动这个新创建的线程,如果线程启动失败,则要从集合中删除新增的线程,并回退增加的线程数。然后在其构造方法中会通过getThreadFactory().newThread(this),将实现了Runnable接口的Worker传递进去来创建一个线程,这样新创建的线程的引用就会指向传递进去的Worker实例。

sdgfafg_25的博客 1032

5.Java并发编程—JUC线程池架构

Java并发编程中的JUC(Java Util Concurrent)线程池架构是一种强大的工具,用于管理和调度多个线程执行任务。该架构提供了一种高效、可扩展的方式来处理并发任务。 JUC线程池架构的核心组件包括线程池Executor、工作线程Worker和任务队列BlockingQueue。Executor是线程池的主要入口,它接收任务并将其提交给线程池进行执行。Worker线程负责执行任务的实际逻辑,通过从任务队列中获取任务并执行。任务队列是一个缓冲区,用于存储待执行的任务。

q1372302825的博客 1613

【JUC —— 10 线程池 】

线程池是并发编程中的一个重要工具,可以有效地管理和调度线程。Java 提供了丰富的线程池实现和配置选项。

m0_72328778的博客 1979

狂神JUC——线程池

package com.company.thread_pool; //线程池 /** * 好处: * 1、降低资源的消耗 * 2、提高响应的速度 * 3、方便管理 */ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadPoolExecutor; /** * 线程池不允许使用Executors创建,而是通

黄坤的博客 1180

JUC部分学习笔记

JUC的部分学习笔记,如有不足,还请指出。

m0_61844176的博客 1004

JUC和线程池的详细讲解

这里写目录标题JUC介绍基本概念JUC中的类和接口主要包含功能线程池为什么使用线程池什么是线程池使用线程池的特点优点缺点JUC中的线程池Executor介绍ThreadPoolExecutorThreadPoolExecutor是JUC中提供的默认线程池实现类构造方法参数详解corePoolSize 核心线程数2. workQueue 阻塞队列3. maximumPoolSize 最大线程数4. keepAliveTime 线程最大空闲时间5. unit keepAliveTime 时间单位6. thr

秃头的博客 754

【并发编程】JUC常用类以及线程池

并发编程中JUC常用类以及线程池相关知识整理总结!

小谷同学的博客 1238

JUC高并发编程10:线程池

本文为尚硅谷JUC高级编程教程第10章的学习笔记,包括线程池概述、线程池架构、线程池使用方式、线程池的底层原理、七个线程池参数、线程池工作流程、拒绝策略、自定义线程池等内容。

专注Java和MySQL领域知识分享 1838

java JUC 之 四种常用线程池 + Spring提供的线程池技术

目录 一. 线程池的概念 二. 使用线程池的原因 三. JUC常用四种创建线程池方式 四. 常见的四种线程池详解 五. 进一步应用 --> Spring提供的线程池技术ThreadPoolTaskExecutor的使用 六. 感谢大家的阅读! 一. 线程池的概念 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线...

古小龙 1243
上一篇: JUC学习笔记(9)—Semaphore
下一篇: JUC学习笔记(11)—CopyOnWriteArrayList,CopyOnWriteArraySet,ConcurrentHashMap
木木那年
博客等级 码龄12年 37粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值