【发布时间】:2015-10-21 12:10:06
【问题描述】:
我打算将一些代码与一些全局变量并行化。 我将使用 ReentrantReadWriteLock。 我是否理解正确,我需要为每个变量创建一个自己的 ReentrantReadWriteLock 实例以确保线程安全?
我的意思是,当我有两个列表时,每个线程都可以附加一个项目,并且所有线程有时都从该列表中读取项目。 在那种情况下,我会实现类似的东西:
private static String[] globalVariables = null;
private static String[] processedItems = null;
private final ReentrantReadWriteLock globalVariablesLock = new ReentrantReadWriteLock();
private final Lock globalVariablesEeadLock = globalVariablesLock .readLock();
private final Lock globalVariablesWriteLock = globalVariablesLock .writeLock();
private final ReentrantReadWriteLock processedItemsLock = new ReentrantReadWriteLock();
private final Lock processedItemsLockReadLock = processedItemsLock .readLock();
private final Lock processedItemsLockWriteLock = processedItemsLock .writeLock();
如果我有更多变量,例如数据库连接(池)、记录器、更多列表等,该怎么办?
我需要创建一个新的 ReentrantReadWriteLock 还是我遗漏了什么? 网上的样本只处理一个变量。
提前致谢。
【问题讨论】:
-
提问时请添加语言标签。不是每个人都来自这里的 Java 世界。
-
哦,对不起,忘了,谢谢
标签: java multithreading reentrantreadwritelock