double-checked-locking相关内容

HashMap 缓存中的同步

我有一个网络应用程序,人们在其中请求资源.为了提高效率,这些资源使用同步的哈希映射进行缓存.这里的问题是,当两个不同的请求同时针对同一个未缓存的资源时:检索资源的操作会占用大量内存,所以我想避免为同一个资源多次调用它. 谁能告诉我以下代码段是否存在任何潜在问题?提前致谢. 私有映射资源 = Collections.synchronizedMap(new HashMap());公共无效请求( ..

使用 ConcurrentMap 进行双重检查锁定

我有一段代码可以由多个线程执行,它需要执行 I/O 绑定操作以初始化存储在 ConcurrentMap 中的共享资源.我需要使这个代码线程安全并避免不必要的调用来初始化共享资源.这是错误的代码: private ConcurrentMap地图;//.....字符串键 = "somekey";资源资源;if (map.containsKey(key)) {资源 = map.get(key);} ..

双重检查锁定文章

我正在阅读关于“Double-已检查锁定"并且超出了本文的主要主题,我想知道为什么在文章的某些地方作者使用了下一个成语: 清单 7. 尝试解决乱序写入问题 public static Singleton getInstance(){如果(实例 == 空){synchronized(Singleton.class) {//1单例 inst = 实例;//2如果(inst == null){s ..
发布时间:2022-01-22 20:03:45 Java开发

Java 双重检查锁定

我最近偶然看到一篇文章,讨论了 Java 中的双重检查锁定模式及其陷阱,现在我想知道我多年来一直使用的该模式的变体是否会遇到任何问题. 我查看了许多有关该主题的帖子和文章,并了解获取对部分构造对象的引用的潜在问题,据我所知,我不认为我的实施受这些问题的影响.以下模式有什么问题吗? 如果没有,为什么人们不使用它?在我看到的有关此问题的任何讨论中,我从未见过有人推荐过它. 公共类测试{私 ..

没有 volatile 的双重检查锁定(但带有 VarHandle 释放/获取)

这个问题在某种程度上很简单.假设我有这个类: 静态类单例{} 我想为它提供一个单例工厂.我可以做(可能)显而易见的事情.我不打算提及枚举的可能性或任何其他可能性,因为我对它们不感兴趣. static final class SingletonFactory {私有静态 volatile 单例单例;公共静态单例 getSingleton() {if (singleton == null) {/ ..
发布时间:2021-12-28 22:59:54 Java开发

单例双重检查并发问题

休耕条款取自 jetbrains.net在阅读了这篇文章和网络上的其他一些文章后,我仍然不明白在第一个线程进入锁之后如何返回 null.哪位懂的可以帮我解释一下更人性化一点? "考虑以下代码: 公共类Foo{私有静态 Foo 实例;私有静态只读对象挂锁=新对象();公共静态 Foo Get(){如果(实例 == 空){锁(挂锁){如果(实例 == 空){实例 = 新 Foo();}}}返回 ..
发布时间:2021-12-28 22:51:58 C#/.NET

.NET 中的双重检查锁定

我看到了这篇文章,讨论了为什么双重检查锁定范例在 Java 中被破坏.如果变量声明为 volatile,范式是否适用于 .NET(特别是 C#)? 解决方案 在 C# 中实现单例模式 在第三个版本中谈到了这个问题. 它说: 使实例变量 volatile 可以使其工作,就像显式内存屏障调用一样,尽管在后一种情况下,即使专家也无法确切地同意需要哪些屏障.我倾向于避免出现专家不同意什 ..
发布时间:2021-12-06 11:24:25 C#/.NET

Java双重检查锁定

我最近看到一篇讨论 Java 中双重检查锁定模式及其陷阱的文章,现在我想知道我多年来一直使用的该模式的变体是否会出现任何问题. 我查看了许多关于该主题的帖子和文章,并了解获取对部分构造对象的引用的潜在问题,据我所知,我不认为我的实施受这些问题的影响.以下模式有问题吗? 如果没有,人们为什么不使用它?我从未见过在围绕此问题的任何讨论中推荐过它. 公共类测试{私有静态测试实例;私有静态布 ..

为什么在双重检查锁定中使用 volatile

从Head First设计模式书中,双检查锁定的单例模式已经实现如下: 公共类单例{私有的 volatile 静态 Singleton 实例;私人单例(){}公共静态单例 getInstance() {如果(实例 == 空){同步(Singleton.class){如果(实例 == 空){实例 = 新单例();}}}返回实例;}} 我不明白为什么要使用 volatile.volatile 的使 ..

为什么在双重检查锁定中使用 volatile

从Head First设计模式书中,双检查锁定的单例模式已经实现如下: 公共类单例{私有的 volatile 静态 Singleton 实例;私人单例(){}公共静态单例 getInstance() {如果(实例 == 空){同步(Singleton.class){如果(实例 == 空){实例 = 新单例();}}}返回实例;}} 我不明白为什么要使用 volatile.volatile 的使 ..

双重检查锁定,无易失性(但具有VarHandle释放/获取功能)

从某种意义上说,这个问题很容易.假设我有这个课程: 静态类Singleton {} 我想为此提供一个单例工厂.我可以做(可能)很明显.我将不提及枚举的可能性或其他任何可能性,因为它们对我而言没有任何意义. 静态最终类SingletonFactory {私有静态挥发性Singleton Singleton;公共静态Singleton getSingleton(){if(singleton = ..
发布时间:2021-04-23 20:34:21 Java开发

为什么在同步块中使用volatile?

我在Java中看到了一些示例,它们在代码块上进行同步以更改某些变量,而该变量最初被声明为volatile.同步了初始化该实例的块...我的问题是,为什么我们在对其进行同步时将其声明为volatile,为什么我们需要同时做这两个?不是其中一个足以满足另一个需求吗? public class someClass { volatile static uniqueInstance = null; ..

PHP线程和同步

我是PHP的新手,因此,我决定实现单例. 虽然我可以在php中重新创建单例模式,但是我不确定如何实现双重检查锁定. 在PHP中甚至是可能/需要的.我在某处读过PHP不是多线程的?有人可以确认吗? 如果它是多线程的,有人可以向我解释lock()或sync()在PHP中的工作方式吗? 谢谢, 亨利 解决方案 无共享架构 PHP的无共享 建筑: 就像HTTP一 ..
发布时间:2020-05-13 21:05:33 PHP