ExecutorService 的线程安全静态初始化

2023-12-02

我正在尝试基于 Initialization-on-demandholder idiom 创建一个线程安全的单例类。这是我的代码

public class Check{ 
  private Check(){  }
  private static class Provider {
    static final ExecutorService INSTANCE = new ThreadPoolExecutor(5, "read this val from file", 60L, TimeUnit.SECONDS, new LinkedBlockingQueue());
  }
  public static ExecutorService getInstance() {
    return Provider.INSTANCE;
  }
}

我的期望是以一种线程安全的方式初始化 ExecutorService,并且只有一个实例应该存在(静态)。

这段代码是否实现了这一点——或者是否需要进行任何更改?


根据SEI指导方针你的方法很好。

但由于我们有枚举,因此使用枚举的简单方法是:

public enum Service {
  INSTANCE;

  private final ExecutorService service = ...
  public getService() { return service ; }

如果你想变得真正聪明,你还可以定义一个枚举实现的接口;因为这可以让你以后mock该单例的用法。这对于使用相同线程执行服务替换来编写单元测试非常有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ExecutorService 的线程安全静态初始化 的相关文章

  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • 在内存中使用 byte[] 创建 zip 文件。 Zip 文件总是损坏

    我创建的 zip 文件有问题 我正在使用 Java 7 我尝试从字节数组创建一个 zip 文件 其中包含两个或多个 Excel 文件 应用程序始终完成 没有任何异常 所以 我以为一切都好 当我尝试打开 zip 文件后 Windows 7 出
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Java 公历日历更改时区

    我正在尝试设置 HOUR OF DAY 字段并更改 GregorianCalendar 日期对象的时区 GregorianCalendar date new GregorianCalendar TimeZone getTimeZone GM
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • Spring Boot Data JPA 从存储过程接收多个输出参数

    我尝试通过 Spring Boot Data JPA v2 2 6 调用具有多个输出参数的存储过程 但收到错误 DEBUG http nio 8080 exec 1 org hibernate engine jdbc spi SqlStat
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要

随机推荐

  • C++ 指针算术怪异

    我发现了我的错误 几个小时后 并将其隔离在以下程序中 问题在于使用指向结构的指针时计算 pst2 变量值的方式 当使用指向 char 的指针时 一切正常 为什么是这样 使用gcc g 版本 Debian 4 4 5 8 4 4 5 对于那些
  • clang-format 使用指示符删除数组定义中的新行

    如果可能的话 我喜欢用指示符定义数组值 enum Mode NONE SPLIT FILES SINGLE FILE INVALID const std string ModeName NONE NONE SPLIT FILES SPLIT
  • 确定 HTML5 数据库内存使用情况

    我正在向我的 Google Chrome 扩展添加 sqlite 支持 以存储历史数据 创建数据库时 需要设置最大大小 我使用了5MB 正如许多示例中建议的那样 我想知道我实际使用了多少内存 例如添加 1000 条记录后 以了解何时达到 5
  • ASP.NET MVC 控制器生命周期

    据我了解 在每个 Web 请求期间不会调用控制器的构造函数 假设这是真的 那么控制器的生命周期是多少 是在应用程序启动时 构造 的 然后通过每个 Web 请求注入的请求上下文进行缓存和调用吗 需要明确的是 我并不是在问如何模拟构造函数行为
  • 使用 Symbolserver 调试 ASP.NET MVC4 的夜间构建

    我使用此描述为我的项目获取 ASP NET MVC 的夜间构建 http blogs msdn com b henrikn archive 2012 06 01 using nightly asp net web stack nuget p
  • Angular2:进度/加载覆盖指令

    我正在尝试在 Angular2 中创建一个加载指示器 覆盖层 我可以将其添加到任何容器 div 中 当动态布尔属性如isLoading更改时 它应该使 div 变灰并显示旋转指示器 并在属性更改回来后再次消失 我得到了一个可行的解决方案 C
  • python requests.get() 返回一个空字符串

    当我运行下面的代码时 它返回一个空字符串 url http www allflicks net wp content themes responsive processing processing us php draw 5 columns
  • 使用 pandoc 将 markdown 转换为 pdf 时如何强制将图像转换为文本

    我制造了一个GitHub 维基百科 软件包手册 我想将其转换为精美的 pdf 手册 然而 我在处理图表时遇到了一些麻烦 其中许多图表都放在接下来的一页中 远远落后于文本中应有的位置 这使得文档非常难以阅读 为此 我基本上遵循了建议here
  • 检查输入是否为整数

    为了学习 C 我正在翻译我用 Python 编写的程序 我写了这个 n 0 while n lt 2 try n int raw input Please insert an integer bigger than 1 except Val
  • Java:计算三角形的面积

    import java lang Math import java awt public class Triangle implements Shape java awt Point a java awt Point b java awt
  • 如何在邮件服务器上的 HTML 电子邮件中嵌入图像?

    如何在 HTML 中嵌入图像 以便图像与 html 文件内容一起传递 而不需要单独访问服务器来检索图像 我们需要它在签名离开邮件服务器之前将公司徽标嵌入到签名中 我们不想使用雷鸟或 Outlook 等客户端解决方案来添加签名 thanks
  • Google 身份服务 - 保持登录状态

    我正在从 Google 登录平台库迁移到新的 Google 身份服务使用一键登录 但当用户刷新或转到其他页面时 网站会自动注销用户 这是加载一键登录的每个页面上都存在的代码 div div 删除它只会让用户退出 无法重新登录 有一个cook
  • Google App Engine - 如何扩展 db.IntegerProperty

    当我在整数和字符串之间交换很多时 我希望扩展 db IntegerProperty 以下是一些代码片段和我在应用程序启动器日志中收到的错误消息 有什么指点吗 谢谢 大卫 class FSIdProperty db IntegerProper
  • 仅 CSS 动画绘制具有边框半径和透明背景的圆

    我正在尝试绘制一个具有边框半径的圆 并为其设置动画 我可以做到这一点 但我不能做的是覆盖元素并将圆圈背景设置为透明 而不取消隐藏蒙版 我无法使其在元素上透明 因为需要应用遮罩来隐藏圆圈的左半部分 因为它旋转以模仿绘制效果 HTML div
  • Android Studio 构建失败,并显示“在根项目 'MyProject' 中未找到任务 ''”。

    在更换笔记本电脑并更新到 Android Studio 版本 0 8 2 后尝试构建项目时 我收到此错误 失败 构建失败并出现异常 什么地方出了错 在根项目 MyProject 中找不到任务 尝试 运行 gradle 任务以获取可用任务的列
  • 远程网络驱动程序上的 Chrome(通过网格)无法启动

    我在使用 Grid 上的远程 Webdriver 功能 1 个 Linux 集线器和 1 个带有 Firefox 和 Chrome 的 Linux 节点 启动 Chrome 的 Cucumber 测试时遇到问题 Firefox 测试进行得很
  • 使用 EaselJS 在 html5 画布中绘制一条线

    我对 Easel 和 HTML5 本身非常陌生 我正在尝试使用 EaselJS 在画布上画一条线 X 坐标固定为 100 Y 坐标从数组列表中获取 我编写的代码如下 有人可以让我知道我哪里出错了吗 function myFunction a
  • Android Wear-如何捕获触摸事件

    我想捕获Android Wear上的触摸事件 我使用的是Samsung Gear Live 来绘制触摸轨迹 我尝试捕获 onTouch 事件和 onGenericMotionEvent 事件 如以下代码所示 但是当我在屏幕上滑动时 该事件仅
  • 向 .NET 应用程序添加脚本功能

    我有一个用 C 编写的小游戏 它使用数据库作为后端 它是 A集换式卡牌游戏 我想以脚本的形式实现卡片的功能 我的意思是我本质上有一个界面 ICard 卡片类实现了 public class Card056 ICard 并且其中包含一个由游戏
  • ExecutorService 的线程安全静态初始化

    我正在尝试基于 Initialization on demandholder idiom 创建一个线程安全的单例类 这是我的代码 public class Check private Check private static class P