问题标签 [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.
java - Java - 使用 ReentrantLock 异步运行作业?
下面的代码允许我们运行一段job
时间,确保一次只能运行一个作业ReentrantLock
。
有没有办法修改此代码以异步运行并在启动线程之前将其job.call()
返回给客户端?MyConcurrentJobException
我们尝试将 try/catch/finally 块包装在一个新Thread
的但unlock
andlock
必须发生在同一个线程中,所以我们得到一个IllegalMonitorException
??
java - 当大多数类并发时如何找出java中的争用问题
我们使用 yourkit profiler 找出并解决了我们应用程序中的许多争用问题。我们使用线程监控来查看哪些线程被阻塞并解决了其中的许多问题。但是 yourkit 不会将 ReentrantLocks 显示为阻塞或等待。那么如何才能真正看到争用问题。
现在不能依赖 Yourkit 监视器分析,因为我们已经使用并发结构修复了大部分位置。现在我们需要一些工具来帮助我们找出包括可重入锁在内的争用问题。
java - 是否将可重入锁设为静态并使其成为互斥锁?
在 Brian Goetz 的《Java Concurrency in Practice》一书中,他的可重入锁示例编程如下:
但是,我很想知道是否将上述代码更改为:
导致锁现在充当互斥锁,或者它是不必要和多余的。
因此,如果锁是私有的、静态的和最终的,这段代码的功能会改变吗?
谢谢大家。马特
java - Future.cancel 和 ReentrantLocks
设想
比方说,我有这个类,Foo
它的唯一工作是顺序执行一组任务。听起来很简单,对吧?好吧,所有这些任务都在各自独立的线程中执行。它不是简单地调用Thread.join()
每个任务来确保顺序执行,而是使用 aReentrantLock
和Condition
。例如,
在每个任务之后,waitForNotification()
都会调用并等待另一个类,比如说Bar
,唤醒它。唯一的工作Bar
是处理通知应用程序任务是通过还是失败的响应。话虽如此,它将做以下两件事之一:
- 完全取消线程(即
getTask().cancel
) - 唤醒线程(即
getCondition().signal
)
第 2 项工作得很好,但第 1 项不行。例如,
而不是取消线程,它似乎只是中断了它,这导致它Foo
继续执行。抱歉冗长,但我想给你们一个清晰的画面。有什么建议么?
java - 如何修复这个“不完全同步”的消费者生产者示例
我正在尝试熟悉 ReentrantLock 和 ConditionVariable 类。我实现了这个 Scala 代码(其中没有任何“Scala 特定”):
我试图在 ListBuffer 中生成 20 个元素,然后读取它们。我遗漏了一些东西,因为我的输出看起来像这样:
但我不知道是什么。我正在使用 ConditionVariable 以便在添加数据时向消费者发出信号,但它似乎只在第一次工作,然后生产者运行直到完成。我需要改变什么才能让它以消费者-生产者的方式运行,而不是以机器人工人的方式运行?:)
python - 多处理 > Manager() > RLock 错误:
我在一个列表中有一个 multiprocessing.Process 对象的集合,它们都使用我将称为“进程安全队列”的相同实例以进程安全(线程安全但与进程)的方式进行通信负责管理线程的父进程。
当子进程去往队列中放入东西时,它调用 ProcessSafeQueue().enqueue(),它首先获取一个 multiprocessing.Manager > RLock,然后写入队列,最后释放锁。
在这种情况下,它是子进程的 pid。这是错误的回溯。
这是实际的错误:
IOError:[Errno 11] 资源暂时不可用
我想知道是否有人可以帮助我理解为什么在应用程序成功运行约 7 小时后我可能会收到此错误。
java - Java锁和happend-before关系
我不确定我是否正确解释了 javadoc。当使用ReentrantLock
after 调用该lock
方法并成功获得锁时,您是否可以访问任何没有任何同步块的对象并且神奇地强制执行happend-before 关系?
我看不出ReentrantLock
和我正在处理的对象之间有任何联系,这就是为什么很难相信我可以安全地处理它们。但就是这样,还是我读错了javadoc?
java - 如何安全地在 Java 中设置/获取字符串?
我读过 Java String 类是不可变的和线程安全的,但我仍然对字符串的引用分配是否是线程安全的感到困惑。
第一个问题:如果线程 A 调用Foo.setString()
而线程 B 调用Foo.getString()
,那么下面的代码是线程安全的吗?
第二个问题:如果上面的代码不是线程安全的,使用了ReentrantLock,Foo.getString()
方法怎么写?
我必须使用 ReentrantLock 因为我需要使用 tryLock(timeout) 功能。
java - ReentrantLock 同步 getter 和 setter
假设您有以下代码:
回程速度X好吗?或者应该是:
哪个是对的?或者它们是等价的吗?
spring-webflow - Spring Web Flow LockTimeoutException
我们在 Weblogic 10 集群环境中使用 Spring Web Flow (2.0.9)。在生产中,我们得到了很多LockTimeoutException : Unable to acquire conversation lock after 30 seconds。
我一直在试图弄清楚为什么在某些情况下只有一次单击或我们正在访问网站本身的主页时会出现上述异常。
请在 SWF 中找到试图锁定 FlowController 的代码。我不知道是锁在正在访问的 servlet 上还是其他什么?
请帮助了解在 Web 应用程序中发生此锁定时哪个资源实际上被锁定在 SWF 中?
要了解 ReentrantLock 的概念,请参考下面的链接。
提前致谢。
异常堆栈跟踪
SWF 中的锁实现