我不久前偶然发现了这个线程: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/