java - 制作静态可重入锁

标签 java multithreading reentrantlock

我不久前偶然发现了这个线程:Does making a reentrant lock static and make it a mutex?我自己还有一个问题:

我有兴趣创建一个私有(private)静态最终ReentrantLock锁是否不被视为代码味道?我读过静态变量是邪恶的,但我当前正在处理的用例看起来是使用静态变量的理想场所。

有人愿意帮忙吗?

编辑详细信息:我有这个类,将其称为FileProcessor,它在另一个线程中执行给定的工作。我的用例是启动此类的一些实例并完成这些工作。但我想做的是确保他们中只有一个人能够同时完成这项工作,并且他们将轮流执行这项工作。

所以我想通了,我会给他们一个static ReentrantLock,它将lock()作为run() block 中的第一件事,并且unlock() 和最后一样。这样他们就有了一个共享锁来保护处理同步。

谢谢。

最佳答案

在类级别使用静态Lock进行同步是绝对正常的。您还可以使用

synchronized (FileProcessor.class) {
    //your code
}

关于java - 制作静态可重入锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47722200/

相关文章:

java - Java MVC中行SQL统计记录

java volatile 数组,我的测试结果与预期不符

c++ - 如何修复从 poco 库收到的异常?

java - 与嵌套锁同步

java - 模拟交通信号(单盒)

java - 终止线程池中的线程

java - 将事件从 Activity 中的一个 fragment 发送到另一个 fragment

java - 如何将 URL 连接设置为 POST

java - 基于另一个线程结果的数据库回滚

java - 在方法的本地范围内创建的 ReentrantLock 对象将如何工作?