通过ExecutorService实现单例的同步访问控制

(一)单例模式详解 作者:zuoxiaolong8810(左潇龙),转载请注明出处。             上一章,我们学习了设计模式的概念,以及为什么要学习设计模式,还有在进行系统设计时应当遵守的六大原则,本章我们就来开始一一的学习GOF当中的二十三钟设计模式。             我一会在思考如何去诠释这么多设计模式,因为网上有很多现成的,可供学习的资料,我在想有什么地方可以让各位跟着我的节奏去学习,而 阅读详情
from:http://www.java2000.net/p13007

Count是一个多线程偶数计数器,通常我们应该使用synchronized,或者Lock来保证该递增操作的原子性和可见性。本例使用了单例的ExecutorService,来保证Count的递增的原子性。

  1. import java.util.concurrent.Callable;
  2. import java.util.concurrent.ExecutionException;
  3. import java.util.concurrent.ExecutorService;
  4. import java.util.concurrent.Executors;
  5. /**
  6.  * 通过ExecutorService实现单例的同步访问控制。
  7.  * 
  8.  * @author 老紫竹 JAVA世纪网(java2000.net)
  9.  * 
  10.  */
  11. public class T {
  12.   private final ExecutorService exec = Executors.newSingleThreadExecutor();
  13.   public long getCount() throws InterruptedException, ExecutionException {
  14.     return exec.submit(new Callable<Long>() {
  15.       @Override
  16.       public Long call() throws Exception {
  17.         return ++count;
  18.       }
  19.     }).get();
  20.   }
  21.   private long count;
  22.   public void add() {
  23.     exec.execute(new Runnable() {
  24.       @Override
  25.       public void run() {
  26.         count++;
  27.         System.out.println(count);
  28.       }
  29.     });
  30.   }
  31.   public static void main(String[] args) {
  32.     final T t = new T();
  33.     class TT extends Thread {
  34.       public void run() {
  35.         for (int i = 1; i <= 5; i++) {
  36.           try {
  37.             t.add();
  38.             System.out.println(t.getCount());
  39.             Thread.sleep(10);
  40.           } catch (Exception e) {
  41.             // TODO Auto-generated catch block
  42.             e.printStackTrace();
  43.           }
  44.         }
  45.       }
  46.     }
  47.     for (int i = 1; i <= 5; i++) {
  48.       new TT().start();
  49.     }
  50.   }
  51. }
运行结果
1
2
3
4
5
6
7
10
8
9
11
12
15
16
19
14
17
20
13
18
21
22
24
26
28
25
29
27
30
23
31
32
35
37
39
33
36
38
34
40
41
42
45
47
49
43
44
46
48
50


线程池ExecutorService同步执行任务 线程池ExecutorService同步执行任务 业务需求:批量给设备发送文件,例如:我要给20台设备发送数据,可最多给5台同时发送,当其中一台发送完成以后,接着给下一台发,但一次最多同时给5台发送 public void test(List<Long> equipnos,byte [] fileByte)throws Exception{ //1创建线程池 ExecutorService executorService = Executors.newFixedThreadPool(5); 阅读详情

相关推荐

SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习)

结合以上,学习并模仿若依登录接口中异步记录登录日志的操作。在若依登录的SysLoginService中login登录方式有异步记录登录日志的操作。

BADAO_LIUMANG_QIZHI的博客 2157

线程池的单例模式实现

在实际应用中,可以根据具体需求,使用不同的线程池类型和配置。你可以根据应用场景选择适合的线程池类型,如 CachedThreadPool、SingleThreadExecutor 等,并根据具体需求进行线程池的配置。在上述示例中,我们使用了懒汉式的单例模式实现,即在需要时才创建线程池实例。通过 getInstance() 方法获取线程池实例,如果实例尚未创建,则会在该方法内部创建一个新的线程池实例。线程池的单例模式实现是为了确保在整个应用程序中只有一个线程池实例,从而避免资源浪费和重复创建。

kankan_s的专栏 655

iOS中.obj、.usdz、.dae和.scn格式之间的转化(思路清晰版)

作者最近在写项目的过程中遇到了一些3d模型格式问题,故写下这篇文章记录一下解决问题的过程。

yueliangmua的博客 5586

单例模式(一)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

weixin_39069034的博客 202

大众点评爬虫实战:如何用Python绕过反爬机制获取评论数据(附完整代码)

本文深入探讨了2024年使用Python进行大众点评数据采集的实战策略。文章详细解析了现代反爬机制的核心逻辑,并提供了从构建拟人化请求会话、应对动态内容与接口加密,到工程化实践(代理调度、状态持久化)的完整解决方案与代码示例,旨在帮助数据分析师稳健获取评论数据,用于后续的文本挖掘与商业洞察。

weixin_29084111的博客 1919

PCL读取点云数据报错:Failed to find match for field ‘x‘/ ‘y‘/ ‘z‘.

原因:使用matlab生成的pcd文件,点云数据是双精度类型,pcl处理的点云数据是单精度类型。解决方案:使用matlab生成的点云坐标单精度化,然后在生成点云加以存储。

little_white138的博客 869

JAVA多线程、同步

原文:https://www.cnblogs.com/wxd0108/p/5479442.html 原文:https://www.cnblogs.com/zhaoyan001/p/7049627.html 原文:https://blog.csdn.net/xiaojin21cen/article/details/81778651 概念 多线程:指的是这个程序(一个进程)运行时产生了不止一个线程并行...

zxc_jkl的博客 293

Vue3多级路由缓存失效的深度解析与实战解决方案

本文深度解析了Vue3项目中多级路由嵌套下keep-alive缓存失效的根本原因,并提供了三种实战解决方案。通过剖析组件树、router-view与keep-alive的协作机制,揭示了缓存无法穿透多层router-view的技术本质。文章对比了路由扁平化重构、状态管理配合路由守卫以及使用社区插件等方案的优缺点与适用场景,为开发者解决这一常见难题提供了清晰的选型指导。

weixin_29001423的博客 271

Spring中的单例多线程与ExecutorService的结合

在 Spring 中,单例模式保证了一个 Bean 在整个应用生命周期内只有一个实例,而多线程则允许多个线程并发执行任务。单例 Bean 被多个线程访问时,如果不小心处理线程安全问题,可能会导致并发问题。

2301_80190170的博客 1086

NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控

Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著

weixin_43877080的博客 1万+

零基础玩转IndexTTS2:5分钟搭建个人语音克隆工具(支持B站同款情感语音)

本文详细介绍了如何零基础使用IndexTTS2快速搭建个人语音克隆工具,支持B站同款情感语音。IndexTTS2作为自回归零样本TTS系统,突破传统技术限制,实现精准时长控制和丰富情感表达。通过HuggingFace在线演示,用户可轻松克隆音色并调节情感参数,适用于自媒体配音、有声书朗读等场景。

purple的博客 917

Java的executorservice_Java利用ExecutorService实现同步执行大量线程

自从java1.5以后,官网就推出了Executor这样一个类,这个类,可以维护我们的大量线程在操作临界资源时的稳定性。先上一段代码吧:TestRunnable.javapublic class TestRunnable implements Runnable {private String name;public TestRunnable(String name) {this.name = na...

weixin_30711223的博客 685

基于STM32L4XX、HAL库的AD7124-8BCPZ模数转换器ADC驱动程序设计

/ 公式: Voltage = (adc_value / (2^23 - 1)) * Vref。// 模式控制位[7:5]=000 (连续转换模式)// 3.2 配置通道0,使其使用AIN0(+)和AIN1(-),并关联到配置0和滤波器0。= 0x14) { // AD7124-8的ID是0x14。// 双极性操作,缓冲AINP/AINN。

zhusl6688的博客 376

Java线程池ExecutorService

目录1 ExecutorService介绍2 ExecutorService的创建3 ExecutorService的使用4 ExecutorService的执行4.1 execute(Runnable)4.2 submit(Runnable)4.3 submit(Callable)4.4 invokeAny(…)4.5 invokeAll(…)5 ExecutorService的关闭6 项目中的使用 1 ExecutorService介绍 本篇主要涉及到的是java.util.concurrent包中的

赵广陆 2万+

2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)

本文详细介绍了Ribo-seq数据的质控分析流程,重点讲解了使用fastp进行原始数据质控的关键步骤和参数设置。作者通过Snakemake自动化流程示例,展示了如何去除接头序列、过滤低质量reads、生成质控报告等操作。文章强调高质量的Ribo-seq数据对转录后调控和翻译动态研究的重要性,并提供了兼顾数据质量和下游分析需求的参数配置建议。该流程有助于研究人员规范高效地完成Ribo-seq数据质控,为后续分析提供可靠数据基础。

784

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ExecutorService

本文翻译自http://tutorials.jenkov.com/java-util-concurrent/executorservice.html,人工翻译,仅供学习交流。 ExecutorService java.util.concurrent.ExecutorService接口是一种能够在后台并发执行任务的异步执行机制。本文中,我将会介绍如何创建ExecutorService,如何向它提交要执行的任务,如何查看这些任务的结果以及当需要时,如何再次关闭ExecutorService。 任务委派 下面的图

lzc_23的博客 3463

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ExecutorService,Executors 使用

JAVA 5之后,使用线程时,都离不开ExecutorService,这是一个借口,他继承了Executor接口。 这是API描述: Executor 提供了管理终止的方法,以及可为跟踪一个或多个异步任务执行状况而生成 Future 的方法。 可以关闭 ExecutorService,这将导致其拒绝新任务。提供两个方法来关闭 ExecutorService。shutdown() 方

路人甲的专栏 5374

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java ExecutorService

ExecutorService 是Java并发编程中的一个接口,定义在 java.util.concurrent 包中。是 Java JDK 提供的框架,用于简化异步模式下任务的执行。

weixin_47363690的博客 1628

Android ExecutorService线程池

ExecutorService线程池 ExecutorService 建立多线程的步骤:  1。定义线程类  class Handler implements Runnable{  }  2。建立ExecutorService线程池  ExecutorService executorService = Executors.newCachedThreadPool();

Working harder, getting stronger! 855

ExecutorService线程池

ExecutorService 建立多线程的步骤: 1。定义线程类 class Handler implements Runnable{} 2。建立ExecutorService线程池 ExecutorService executorService = Executors.newCachedThreadPool();或者int cpuNums = Ru...

a55613的博客 119

Java ExecutorService 示例

在本教程中,我们将了解Java 中的executorservice。我们已经知道 Java 与需要在线程中并发执行任务的多线程应用程序一起工作非常有效。 对于任何应用程序来说,同时执行大量线程都是具有挑战性的。因此,为了克服这个问题,Java 提供了 ExecutorService 接口,它是 Executors 框架的一个子接口。 在本文中,我们将了解如何创建 ExecutorService。并且,如何将要执行的任务提交给执行器服务,我们还讨论了如何查看这些任务的结果。 最后,我们将研究如何在需

allway2的博客 2541

枚举实现线程池单例

  如题,系统需要一个线程池,在多处地方均可使用,考虑使用单例来保证线程池对象的唯一性。而单例实现手段目前最火的是枚举,那好吧,就用它了。直接看代码吧: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 枚举单例 */ public enum T...

weixin_30439031的博客 417

Java线程池 ExecutorService

一、ExecutorService介绍 ExecutorService是Java中对线程池定义的一个接口,它java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法: Java API对ExecutorService接口的实现有两个,所以这两个即是Java线程池具体实现类: ThreadPoolExecutor ScheduledThreadPoolExecutor ExecutorService还继承了Executor接口(注意区分Executor接口和Execu

qq_40056060的博客 5844

ExecutorService深入解释

接口 java.util.concurrent.ExecutorService 表述了异步执行的机制,并且可以让任务在后台执行 在 java.util.concurrent 包中的 ExecutorService 的实现就是线程池的实现 ExecutorService 样例 实例:ExecutorService executorService = Executors.newFixedThreadP...

OnTheRoad的博客 1万+
上一篇: Java SE 6 Update 11 发布公告
下一篇: Java十大杰出人物
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值