问题标签 [reentrantlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
38 浏览

java - 在文件方法上运行线程

嗨,我尝试在我的“threadedSort”上运行一个线程,但我不能使用传统的 void 运行方法,因为它返回 void。我也尝试使用同步方法,但我认为它没有任何区别......与可重入方法相同,我不知道我做错了什么。

0 投票
1 回答
145 浏览

java - 在java中使用重入锁限制对共享数据的访问

我有一个简单的要求,其中一个资源(比如说一个链表)在两个服务之间共享:一个向它添加元素,另一个计算它的统计信息。我想在java中使用可重入锁。我想出了以下解决方案。

还有比这更好的解决方案吗?

}

唯一强制性的事情是不应该错过任何调用(加法器或计算器)。

0 投票
2 回答
375 浏览

java - ReentrantLock 是否足够安全以保护对静态变量的多线程访问

我有一个带有静态变量的类,并且多个线程将具有该类的实例。

我关心的静态变量是 a Thread,它将从队列中弹出一条消息并通过电子邮件发送,直到队列为空。每次将消息添加到队列时,我都会检查线程是否处于活动状态。如果没有,我重新启动它。

另一个问题中,据说静态变量应该在同步块中使用。

我的问题是,将 aReentrantLock用于这些 if 检查是否安全?还是我需要使用synchronized?或两者?

0 投票
1 回答
940 浏览

java - ReentrantReadWriteLock 是否实现为自旋锁?

如何ReentrantReadWriteLock工作?是自旋锁吗?

问题来自 Elasticsearch,当它显示

在所有快照中的热线程中,cpu 使用率同时很高。它看起来像自旋锁。

0 投票
0 回答
214 浏览

java - 为什么 ConcurrentHashMap 在 computeIfAbsent 中使用“同步”

在 ConcurrentHashMap 的“computeIfAbsent”方法中有代码:

为什么不使用“可重入锁”?

0 投票
1 回答
744 浏览

java - Java - ReentrantLock,锁无法解锁

以下是线程被锁定之前和线程解锁后的所有信息。我正在使用方法 lock() 和 unlock() ReentrantLock。但是,尽管某个进程已经解锁了锁,但另一个进程无法锁定同一个锁。

在此处输入图像描述

0 投票
1 回答
682 浏览

java - Reentrantlock 在 Java 中工作正常,但在 Scala 中导致 IllegalMonitorException

我想迁移一个 Java 函数

Scala中的相同功能:

LOCK.unlock()总是导致 IllegalMonitorStateException 。我看不出发生这种情况的任何原因。

谁能告诉我问题出在哪里?

0 投票
3 回答
3220 浏览

java - Java在不同线程上锁定和解锁

我有一个主线程和一个工作线程。主线程将任务添加到队列中,工作线程将它们带到计算数据中。在将对象放入队列之前,我在任务对象内的ReentrantLock 对象(在主线程上)上调用 lock。当工作线程完成处理队列中的任务时,我调用解锁(在工作线程上)。问题是我得到一个 IllegalMonitorStateException 因为我在不同的线程上调用 lock 和 unlock 。

我正在寻找可以在不同线程上执行此操作的替代锁定系统。

例子:

0 投票
1 回答
6159 浏览

java - Java 5 中的 Lock 和 ReentrantLock 有什么区别?

我不明白他们之间的区别。我认为来自锁接口的锁也是可重入的,那么它们之间有什么区别?你什么时候使用每个?

0 投票
0 回答
18 浏览

java - ReentrantLock 不等待锁释放

为什么在获得锁控制后会进入第二个 lock.lock() 语句?难道它不应该无限期地等待第二个锁定语句来获取它吗?

是因为我在单线程中获得锁吗?

输出: