Java 类java.util.concurrent.locks.ReentrantReadWriteLock 实例源码
项目:monarch
文件:CustomEntryConcurrentHashMap.java
final V get(final Object key, final int hash, final MapCallback<K, V, ?, ?> readCallback) {
final ReentrantReadWriteLock.ReadLock readLock = super.readLock();
readLock.lock();
try {
if (this.count != 0) { // read-volatile
HashEntry<K, V> e = getFirst(hash);
while (e != null) {
if (e.getEntryHash() == hash && equalityKeyCompare(key, e)) {
final V v = e.getMapValue();
if (v != null) {
if (readCallback != null) {
readCallback.oldValueRead(v);
}
return v;
}
}
e = e.getNextEntry();
}
}
} finally {
readLock.unlock();
}
return null;
}
项目:angel
文件:ConsistencyController.java
private TVector cloneRow(int matrixId, int rowIndex, TVector row, TaskContext taskContext) {
if (row == null) {
return null;
}
if (isNeedClone(matrixId)) {
ReentrantReadWriteLock globalStorage =
PSAgentContext.get().getMatrixStorageManager().getMatrixStoage(matrixId).getLock();
TVector taskRow = taskContext.getMatrixStorage().getRow(matrixId, rowIndex);
try {
globalStorage.readLock().lock();
if(taskRow == null || (taskRow.getClass() != row.getClass())){
taskRow = row.clone();
taskContext.getMatrixStorage().addRow(matrixId, rowIndex, taskRow);
} else {
taskRow.clone(row);
}
} finally {
globalStorage.readLock().unlock();
}
return taskRow;
} else {
return row;
}
}
项目:monarch
文件:CustomEntryConcurrentHashMap.java
/**
* Save the state of the <tt>ConcurrentHashMap</tt> instance to a stream (i.e., serialize it).
*
* @param s the stream
* @serialData the key (Object) and value (Object) for each key-value mapping, followed by a null
* pair. The key-value mappings are emitted in no particular order.
*/
private void writeObject(final java.io.ObjectOutputStream s) throws IOException {
s.defaultWriteObject();
for (int k = 0; k < this.segments.length; ++k) {
final Segment<K, V> seg = this.segments[k];
final ReentrantReadWriteLock.ReadLock readLock = seg.readLock();
readLock.lock();
try {
final HashEntry<K, V>[] tab = seg.table;
for (int i = 0; i < tab.length; ++i) {
for (HashEntry<K, V> e = tab[i]; e != null; e = e.getNextEntry()) {
s.writeObject(e.getKey());
s.writeObject(e.getMapValue());
}
}
} finally {
readLock.unlock();
}
}
s.writeObject(null);
s.writeObject(null);
}
项目:bloom
文件:CuckooFilter.java
@Override
public boolean put(byte[] item) {
long[] hashes = new long[2];
strategy.hashes(item, hashes);
long bucketIdx = hashes[0] % numBuckets;
long tag = fingerprint(hashes[1]);
boolean itemAdded = false;
ReentrantReadWriteLock.WriteLock lock = segments[(int)(bucketIdx & FAST_MOD_32)].writeLock();
lock.lock();
try {
itemAdded = table.append(bucketIdx, tag);
} finally {
lock.unlock();
}
if(!itemAdded) {
itemAdded = putInAlt(bucketIdx, tag);
}
if(itemAdded) {
count.incrementAndGet();
} else {
log.log(Level.WARNING, String.format("Cucko table exceed capacity: %1$d elements", count.get()));
}
return itemAdded;
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testMultipleReadLocks(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
lock.readLock().lock();
Thread t = newStartedThread(new CheckedRunnable() {
public void realRun() throws InterruptedException {
assertTrue(lock.readLock().tryLock());
lock.readLock().unlock();
assertTrue(lock.readLock().tryLock(LONG_DELAY_MS, MILLISECONDS));
lock.readLock().unlock();
lock.readLock().lock();
lock.readLock().unlock();
}});
awaitTermination(t);
lock.readLock().unlock();
}
项目:angel
文件:AMWorkerGroup.java
/**
* Create a AMWorkerGroup
* @param groupId worker group id
* @param context master context
* @param workerMap workers contains in worker group
* @param leader leader worker of worker group
* @param splitIndex training data block index assgined to this worker group
*/
public AMWorkerGroup(WorkerGroupId groupId, AMContext context, Map<WorkerId, AMWorker> workerMap,
WorkerId leader, int splitIndex) {
this.context = context;
this.groupId = groupId;
this.workerMap = workerMap;
this.leader = leader;
this.splitIndex = splitIndex;
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readLock = readWriteLock.readLock();
writeLock = readWriteLock.writeLock();
stateMachine = stateMachineFactory.make(this);
diagnostics = new ArrayList<String>();
successWorkerSet = new HashSet<WorkerId>();
failedWorkerSet = new HashSet<WorkerId>();
killedWorkerSet = new HashSet<WorkerId>();
}
项目:monarch
文件:CustomEntryConcurrentHashMap.java
final V replace(final K key, final int hash, final V newValue) {
final ReentrantReadWriteLock.WriteLock writeLock = super.writeLock();
writeLock.lock();
try {
HashEntry<K, V> e = getFirst(hash);
while (e != null && (e.getEntryHash() != hash || !equalityKeyCompare(key, e))) {
e = e.getNextEntry();
}
V oldValue = null;
if (e != null) {
oldValue = e.getMapValue();
e.setMapValue(newValue);
}
return oldValue;
} finally {
writeLock.unlock();
}
}
项目:Aceso
文件:AbstractPatchesLoaderImpl.java
@Override
public boolean load() {
try {
InstantFixClassMap.setClassLoader(getClass().getClassLoader());
HashMap<Integer, ReadWriteLock> lockMap = new HashMap<>();
HashMap<Integer, String> classIndexMap = new HashMap<>();
String[] patchedClasses = getPatchedClasses();
int[] patchedClassIndexes = getPatchedClassIndexes();
if (patchedClasses.length != patchedClassIndexes.length) {
throw new IllegalArgumentException("patchedClasses's len is " + patchedClasses.length + ", but patchedClassIndexs's len is " + patchedClassIndexes.length);
}
for (int i = 0; i < patchedClasses.length; i++) {
String className = patchedClasses[i];
int classIndex = patchedClassIndexes[i];
lockMap.put(classIndex, new ReentrantReadWriteLock());
classIndexMap.put(classIndex, className);
Log.i(TAG, String.format("patched %s", className));
}
InstantFixClassMap.setAtomMap(new InstantFixClassMap.AtomMap(classIndexMap, lockMap));
} catch (Throwable e) {
e.printStackTrace();
return false;
}
return true;
}
项目:bloom
文件:StableBloomFilter.java
private void decrement() {
long pivot = ThreadLocalRandom.current().nextLong(numOfBuckets);
for(int i=0; i<bucketsToDecrement; i++) {
long idx = (pivot + i) % numOfBuckets;
ReentrantReadWriteLock.WriteLock currentLock = segments[(int)(idx & FAST_MOD_32)].writeLock();
currentLock.lock();
try { // just in case something goes wrong
long bucketVal = bucketSet.readTag(idx, 0);
if(bucketVal != 0L) {
bucketSet.writeTag(idx, 0, bucketVal-1);
}
} finally {
currentLock.unlock();
}
}
}
项目:fangcloud-java-sdk
文件:YfyBaseClient.java
public YfyBaseClient(K key,
YfyRequestConfig requestConfig,
String accessToken,
String refreshToken,
YfyRefreshListener<K> refreshListener) {
if (accessToken == null) {
throw new NullPointerException("access token");
}
this.requestConfig = requestConfig;
this.host = YfyAppInfo.getHost();
this.refreshLock = new ReentrantReadWriteLock();
this.key = key;
this.accessToken = accessToken;
this.refreshToken = refreshToken;
if (refreshToken != null && refreshListener != null) {
this.autoRefresh = true;
this.refreshListener = refreshListener;
}
}
项目:bloom
文件:StableBloomFilter.java
StableBloomFilter(BitSet bitset, long numOfBuckets, int bitsPerBucket, long bucketsToDecrement, int numHashFunctions, HashFunction strategy) {
// allow 1 item per bucket
this.bucketSet = new BucketSet(bitsPerBucket, 1, numOfBuckets, bitset);
this.numHashFunctions = numHashFunctions;
this.numOfBuckets = numOfBuckets;
this.bitsPerBucket = bitsPerBucket;
this.strategy = strategy;
this.bucketsToDecrement = bucketsToDecrement;
for(int i=0;i<DEFAULT_CONCURRENCY_LEVEL;i++) {
segments[i] = new ReentrantReadWriteLock();
}
log.log(
Level.FINE,
String.format(
"Stable Bloom filter: %1$d hash functions, %2$d bits, %3$d bits per elemnent",
numHashFunctions,
bitset.bitSize(),
bitsPerBucket)
);
}
项目:Elasticsearch
文件:Translog.java
public Translog(TranslogConfig config, String nodeId) {
super(config.getShardId(), config.getIndexSettings());
this.config = null;
recoveredTranslogs = null;
syncScheduler = null;
bigArrays = null;
ReadWriteLock rwl = new ReentrantReadWriteLock();
readLock = new ReleasableLock(rwl.readLock());
writeLock = new ReleasableLock(rwl.writeLock());
location = null;
current = null;
currentCommittingTranslog = null;
lastCommittedTranslogFileGeneration = -1;
config = null;
translogUUID = null;
}
项目:bloom
文件:StableBloomFilter.java
@Override
public boolean put(byte[] bytes) {
long[] hashes = new long[numHashFunctions];
strategy.hashes(bytes, hashes);
// make room for new values
decrement();
for (int i = 0; i < hashes.length; i++) {
long idx = hashes[i] % numOfBuckets;
ReentrantReadWriteLock.WriteLock currentLock = segments[(int)(idx & FAST_MOD_32)].writeLock();
currentLock.lock();
try { // just in case something goes wrong
bucketSet.writeTag(idx, 0, Utils.MASKS[bitsPerBucket]); // write max val for bucket
} finally {
currentLock.unlock();
}
}
// forever true since we always overwrite bucket content
return true;
}
项目:neoscada
文件:HiveCommon.java
public HiveCommon ()
{
final ReentrantReadWriteLock itemMapLock = new ReentrantReadWriteLock ( Boolean.getBoolean ( "org.eclipse.scada.da.server.common.fairItemMapLock" ) );
this.itemMapReadLock = itemMapLock.readLock ();
this.itemMapWriteLock = itemMapLock.writeLock ();
this.subscriptionValidator = new SubscriptionValidator<String> () {
@Override
public boolean validate ( final SubscriptionListener<String> listener, final String topic )
{
return validateItem ( topic );
}
};
}
项目:hadoop
文件:RMAppAttemptImpl.java
public RMAppAttemptImpl(ApplicationAttemptId appAttemptId,
RMContext rmContext, YarnScheduler scheduler,
ApplicationMasterService masterService,
ApplicationSubmissionContext submissionContext,
Configuration conf, boolean maybeLastAttempt, ResourceRequest amReq) {
this.conf = conf;
this.applicationAttemptId = appAttemptId;
this.rmContext = rmContext;
this.eventHandler = rmContext.getDispatcher().getEventHandler();
this.submissionContext = submissionContext;
this.scheduler = scheduler;
this.masterService = masterService;
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
this.readLock = lock.readLock();
this.writeLock = lock.writeLock();
this.proxiedTrackingUrl = generateProxyUriWithScheme();
this.maybeLastAttempt = maybeLastAttempt;
this.stateMachine = stateMachineFactory.make(this);
this.attemptMetrics =
new RMAppAttemptMetrics(applicationAttemptId, rmContext);
this.amReq = amReq;
}
项目:dxram
文件:OverlayPeer.java
/**
* Creates an instance of OverlayPeer
*
* @param p_nodeID
* the own NodeID
* @param p_contactSuperpeer
* the superpeer to contact for joining
* @param p_initialNumberOfSuperpeers
* the number of expeced superpeers
* @param p_boot
* the BootComponent
* @param p_network
* the NetworkComponent
* @param p_event
* the EventComponent
*/
public OverlayPeer(final short p_nodeID, final short p_contactSuperpeer, final int p_initialNumberOfSuperpeers, final AbstractBootComponent p_boot,
final NetworkComponent p_network, final EventComponent p_event) {
m_boot = p_boot;
m_network = p_network;
m_event = p_event;
m_initialNumberOfSuperpeers = p_initialNumberOfSuperpeers;
m_nodeID = p_nodeID;
registerNetworkMessages();
registerNetworkMessageListener();
m_overlayLock = new ReentrantReadWriteLock(false);
joinSuperpeerOverlay(p_contactSuperpeer);
}
项目:Elasticsearch
文件:LocalTranslog.java
public LocalTranslog(TranslogConfig config) throws IOException {
super(config.getShardId(), config.getIndexSettings());
ReadWriteLock rwl = new ReentrantReadWriteLock();
readLock = new ReleasableLock(rwl.readLock());
writeLock = new ReleasableLock(rwl.writeLock());
this.translogPath = config.getTranslogPath();
// clean all files
Files.createDirectories(this.translogPath);
Files.walkFileTree(this.translogPath, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
Files.delete(file);
return FileVisitResult.CONTINUE;
}
});
// create a new directory
writeChannel = FileChannel.open(this.translogPath.resolve(getFileNameFromId(tmpTranslogGeneration.get())), StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
writtenOffset = 0;
}
项目:strongbox
文件:FileTest.java
@Test
public void file_try_with_resources() {
String path = "test.sbx";
SecretIdentifier secretIdentifier1 = new SecretIdentifier("MySecret");
long version1 = 1;
State state1 = State.ENABLED;
byte[] payload = Encoder.asUTF8("encryptedPayload");
RawSecretEntry entry1 = new RawSecretEntry(secretIdentifier1, version1, state1, Optional.empty(), Optional.empty(), payload);
SecretIdentifier secretIdentifier2 = new SecretIdentifier("MySecret2");
long version2 = 2;
Optional<ZonedDateTime> notBeforeValue = Optional.of(ZonedDateTime.of(2016, 5, 4, 2, 0 ,0, 0, ZoneId.of("UTC")));
RawSecretEntry entry2 = new RawSecretEntry(secretIdentifier2, version2, state1, notBeforeValue, Optional.empty(), payload);
try (File store = new File(new java.io.File(path), new DummyEncryptor(), new FileEncryptionContext(group), new ReentrantReadWriteLock())) {
if (store.exists()) {
store.delete();
}
store.create(entry1);
store.create(entry2);
} // auto closeable should write the results to disk when exiting the try clause, and thus be readable in the next section
try (File file = new File(new java.io.File(path), new DummyEncryptor(), new FileEncryptionContext(group), new ReentrantReadWriteLock())) {
List<RawSecretEntry> list = file.stream().toList();
boolean t = list.get(1).equals(entry2);
assertThat(list, containsInAnyOrder(entry1, entry2));
}
java.io.File f = new java.io.File(path);
if (!f.delete()) {
throw new UnexpectedStateException(path, "EXISTS", "DELETED", "File store deletion failed");
}
}
项目:angel
文件:PS2PSPusherImpl.java
/**
* Create a PS2PSPusherImpl
* @param context PS context
*/
public PS2PSPusherImpl(PSContext context) {
this.context = context;
this.psClient = new PSClient(context);
this.failedUpdateCounters = new HashMap<>();
this.lock = new ReentrantReadWriteLock();
this.stopped = new AtomicBoolean(false);
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testReadLockToString(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
assertTrue(lock.readLock().toString().contains("Read locks = 0"));
lock.readLock().lock();
assertTrue(lock.readLock().toString().contains("Read locks = 1"));
lock.readLock().lock();
assertTrue(lock.readLock().toString().contains("Read locks = 2"));
lock.readLock().unlock();
assertTrue(lock.readLock().toString().contains("Read locks = 1"));
lock.readLock().unlock();
assertTrue(lock.readLock().toString().contains("Read locks = 0"));
}
项目:AOSP-Kayboard-7.1.2
文件:ExpandableBinaryDictionary.java
/**
* Creates a new expandable binary dictionary.
*
* @param context The application context of the parent.
* @param dictName The name of the dictionary. Multiple instances with the same
* name is supported.
* @param locale the dictionary locale.
* @param dictType the dictionary type, as a human-readable string
* @param dictFile dictionary file path. if null, use default dictionary path based on
* dictionary type.
*/
public ExpandableBinaryDictionary(final Context context, final String dictName,
final Locale locale, final String dictType, final File dictFile) {
super(dictType, locale);
mDictName = dictName;
mContext = context;
mDictFile = getDictFile(context, dictName, dictFile);
mBinaryDictionary = null;
mIsReloading = new AtomicBoolean();
mNeedsToRecreate = false;
mLock = new ReentrantReadWriteLock();
}
项目:oryx2
文件:AutoReadWriteLockTest.java
@Test
public void testWriteLock() {
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
AutoReadWriteLock al = new AutoReadWriteLock(lock);
assertFalse(lock.isWriteLocked());
try (AutoLock al2 = al.autoWriteLock()) {
assertTrue(lock.isWriteLocked());
}
assertFalse(lock.isWriteLocked());
}
项目:hadoop
文件:ApplicationImpl.java
public ApplicationImpl(Dispatcher dispatcher, String user, ApplicationId appId,
Credentials credentials, Context context) {
this.dispatcher = dispatcher;
this.user = user;
this.appId = appId;
this.credentials = credentials;
this.aclsManager = context.getApplicationACLsManager();
this.context = context;
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
readLock = lock.readLock();
writeLock = lock.writeLock();
stateMachine = stateMachineFactory.make(this);
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testGetWaitQueueLengthIMSE(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
final Condition c = lock.writeLock().newCondition();
try {
lock.getWaitQueueLength(c);
shouldThrow();
} catch (IllegalMonitorStateException success) {}
}
项目:angel
文件:PSAttempt.java
/**
* Init the Attempt for PS
* @param ip excepted host for this ps attempt
* @param psId ps id
* @param attemptIndex attempt index
* @param amContext Master context
*/
public PSAttempt(String ip, ParameterServerId psId, int attemptIndex, AMContext amContext) {
this.expectedIp = ip;
attemptId = new PSAttemptId(psId, attemptIndex);
this.context = amContext;
stateMachine = stateMachineFactory.make(this);
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readLock = readWriteLock.readLock();
writeLock = readWriteLock.writeLock();
metrices = new HashMap<String, String>();
diagnostics = new ArrayList<String>();
}
项目:angel
文件:YarnContainerAllocator.java
public YarnContainerAllocator(AMContext context) {
super(YarnContainerAllocator.class.getName());
this.context = context;
this.recordFactory = RecordFactoryProvider.getRecordFactory(null);
stopped = new AtomicBoolean(false);
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readLock = readWriteLock.readLock();
writeLock = readWriteLock.writeLock();
}
项目:angel
文件:AMMatrixMetaManager.java
public AMMatrixMetaManager(AMContext context) {
this.context = context;
matrixMetaManager = new MatrixMetaManager();
matrixPartitionsOnPS = new HashMap<>();
matrixIdToPSSetMap = new HashMap<>();
psIdToMatrixIdsMap = new HashMap<>();
psIdToRecoverPartsMap = new ConcurrentHashMap<>();
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
readLock = readWriteLock.readLock();
writeLock = readWriteLock.writeLock();
}
项目:outcomes
文件:Main.java
private void readWriteLock() {
ExecutorService executor = Executors.newFixedThreadPool(2);
Map<String, String> map = new HashMap<>();
ReadWriteLock lock = new ReentrantReadWriteLock();
executor.submit(() -> {
lock.writeLock().lock();
try {
sleep(1);
map.put("foo", "bar");
} finally {
lock.writeLock().unlock();
}
});
Runnable readTask = () -> {
lock.readLock().lock();
try {
System.out.println(map.get("foo"));
sleep(1);
} finally {
lock.readLock().unlock();
}
};
executor.submit(readTask);
executor.submit(readTask);
stop(executor);
}
项目:OpenJSharp
文件:Repository.java
/**
* Construct a new repository with the given default domain.
*/
public Repository(String domain, boolean fairLock) {
lock = new ReentrantReadWriteLock(fairLock);
domainTb = new HashMap<String,Map<String,NamedObject>>(5);
if (domain != null && domain.length() != 0)
this.domain = domain.intern(); // we use == domain later on...
else
this.domain = ServiceName.DOMAIN;
// Creates a new hashtable for the default domain
domainTb.put(this.domain, new HashMap<String,NamedObject>());
}
项目:jwala
文件:BinaryDistributionLockManagerImpl.java
@Override
public void writeLock(String resourceName) {
synchronized(lockObject) {
if (!binariesWriteLocks.containsKey(resourceName)) {
binariesWriteLocks.put(resourceName, new ReentrantReadWriteLock());
}
}
binariesWriteLocks.get(resourceName).writeLock().lock();
LOGGER.info("Added write lock for resource {}", resourceName);
}
项目:bloom
文件:PartitionedBloomFilter.java
PartitionedBloomFilter(BitSet bits, int numHashFunctions, HashFunction strategy, long sliceSize) {
log.log(Level.FINE,
String.format(
"PartitionedBloomFilter: %1$d hash functions, %2$d bits, %3$d slice length",
numHashFunctions, bits.bitSize(), sliceSize));
this.bits = bits;
this.numHashFunctions = numHashFunctions;
this.strategy = strategy;
this.sliceSize = sliceSize; // sliceSize must be equals sliceSize*numHashFunctions
this.numItems = new AtomicLong(0);
for(int i=0;i<DEFAULT_CONCURRENCY_LEVEL;i++) {
segments[i] = new ReentrantReadWriteLock();
}
}
项目:boohee_v5.6
文件:PropertyValuesHolder.java
private PropertyValuesHolder(Property property) {
this.mSetter = null;
this.mGetter = null;
this.mKeyframeSet = null;
this.mPropertyMapLock = new ReentrantReadWriteLock();
this.mTmpValueArray = new Object[1];
this.mProperty = property;
if (property != null) {
this.mPropertyName = property.getName();
}
}
项目:hadoop
文件:LocalizedResource.java
public LocalizedResource(LocalResourceRequest rsrc, Dispatcher dispatcher) {
this.rsrc = rsrc;
this.dispatcher = dispatcher;
this.ref = new LinkedList<ContainerId>();
ReadWriteLock readWriteLock = new ReentrantReadWriteLock();
this.readLock = readWriteLock.readLock();
this.writeLock = readWriteLock.writeLock();
this.stateMachine = stateMachineFactory.make(this);
}
项目:http-caching-and-concurrency-examples
文件:ClimateRepository.java
public ClimateRepository() {
ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
this.readLock = lock.readLock();
this.writeLock = lock.writeLock();
ClimateDto climate = new ClimateDto();
climate.setTemperature(10);
climate.setHumidity(80);
this.climate = climate;
}
项目:strongbox
文件:GenericDynamoDBTest.java
@BeforeMethod
public void setUp() throws Exception {
this.mockDynamoDBClient = mock(AmazonDynamoDBClient.class);
AWSCredentialsProvider mockCredentials = mock(AWSCredentialsProvider.class);
ClientConfiguration mockConfig = mock(ClientConfiguration.class);
this.dynamoDB = new DynamoDB(mockDynamoDBClient, mockCredentials, mockConfig, groupIdentifier, new ReentrantReadWriteLock());
}
项目:OpenDiabetes
文件:RowStoreAVLDisk.java
public RowStoreAVLDisk(DataFileCache cache, Table table) {
this(table);
this.cache = cache;
rowOut = cache.rowOut.duplicate();
cache.adjustStoreCount(1);
largeData = database.logger.propLargeData;
tableSpace = cache.spaceManager.getTableSpace(table.getSpaceID());
lock = new ReentrantReadWriteLock();
readLock = lock.readLock();
writeLock = lock.writeLock();
}
项目:OpenDiabetes
文件:RowStoreAVLDiskData.java
public RowStoreAVLDiskData(Table table) {
this.database = table.database;
this.table = table;
this.indexList = table.getIndexList();
this.accessorList = new CachedObject[indexList.length];
lock = new ReentrantReadWriteLock();
readLock = lock.readLock();
writeLock = lock.writeLock();
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testAwaitUntil_Timeout(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
final Condition c = lock.writeLock().newCondition();
lock.writeLock().lock();
// We shouldn't assume that nanoTime and currentTimeMillis
// use the same time source, so don't use nanoTime here.
final java.util.Date delayedDate = delayedDate(timeoutMillis());
try {
assertFalse(c.awaitUntil(delayedDate));
} catch (InterruptedException fail) { threadUnexpectedException(fail); }
assertTrue(new java.util.Date().getTime() >= delayedDate.getTime());
lock.writeLock().unlock();
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testReadUnlock_IMSE(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
try {
lock.readLock().unlock();
shouldThrow();
} catch (IllegalMonitorStateException success) {}
}
项目:openjdk-jdk10
文件:ReentrantReadWriteLockTest.java
public void testAwait_Timeout(boolean fair) {
final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(fair);
final Condition c = lock.writeLock().newCondition();
final long timeoutMillis = timeoutMillis();
lock.writeLock().lock();
final long startTime = System.nanoTime();
try {
assertFalse(c.await(timeoutMillis, MILLISECONDS));
} catch (InterruptedException fail) { threadUnexpectedException(fail); }
assertTrue(millisElapsedSince(startTime) >= timeoutMillis);
lock.writeLock().unlock();
}