blob: 3c183a20a4aad0864796b54c08e294bb0b4fcd7b [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0) on Sun Aug 28 20:43:04 EST 2016 -->
<title>org.apache.river.concurrent (Apache River v3.0.0 API Documentation (internals))</title>
<meta name="date" content="2016-08-28">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="org.apache.river.concurrent (Apache River v3.0.0 API Documentation (internals))";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/river/collection/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../org/apache/river/config/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/river/concurrent/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Package" class="title">Package&nbsp;org.apache.river.concurrent</h1>
<div class="docSummary">
<div class="block">
Custard-apple is a utility that enables weak, soft, strong
or time references to be used in any collection implementing standard
Java Framework Interfaces
Expected behaviour of reference types may vary between platforms
and should not be depended upon other than; weak references will
be collected when no further strong references remain and soft
references may be collected at any time the JVM's available memory
is under pressure and the referent is softly reachable.</div>
</div>
<p>See:&nbsp;<a href="#package.description">Description</a></p>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Interface Summary table, listing interfaces, and an explanation">
<caption><span>Interface Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Interface</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceQueuingFactory.html" title="interface in org.apache.river.concurrent">ReferenceQueuingFactory</a>&lt;O,R&gt;</td>
<td class="colLast">
<div class="block">An interface for processing ReferenceQueue's and encapsulating Objects
in references and for making references appear as their referent.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/Referrer.html" title="interface in org.apache.river.concurrent">Referrer</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">
The public API of package private Reference implementations, it defines the equals
and hashCode contracts as well as methods identical to Reference.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/RefQueue.html" title="interface in org.apache.river.concurrent">RefQueue</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">This interface defines the only ReferenceQueue method used,
to not depend directly on ReferenceQueue, allowing the use of other Queue
implementations.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TimeBomb.html" title="interface in org.apache.river.concurrent">TimeBomb</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/UntouchableReferrer.html" title="interface in org.apache.river.concurrent">UntouchableReferrer</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/AbstractReferenceComparator.html" title="class in org.apache.river.concurrent">AbstractReferenceComparator</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implements equals and hashCode, subclass ReferenceComparator implements
Serializable and contains serial data.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/AbstractReferrerDecorator.html" title="class in org.apache.river.concurrent">AbstractReferrerDecorator</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">This class exists purely for allowing a client with their own Collection
implementation or Collection wrapper to perform custom serialisation of the
References by replacing the standard Referrer's with their own implementation.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/CollectionDecorator.html" title="class in org.apache.river.concurrent">CollectionDecorator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ComparableReferrerDecorator.html" title="class in org.apache.river.concurrent">ComparableReferrerDecorator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/EntryFacadeConverter.html" title="class in org.apache.river.concurrent">EntryFacadeConverter</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/EntryIteratorFacade.html" title="class in org.apache.river.concurrent">EntryIteratorFacade</a>&lt;O,R&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/EntrySetFacade.html" title="class in org.apache.river.concurrent">EntrySetFacade</a>&lt;O,R&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/NullIterator.html" title="class in org.apache.river.concurrent">NullIterator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/RC.html" title="class in org.apache.river.concurrent">RC</a></td>
<td class="colLast">
<div class="block">
This class contains static methods for decorating collections
with reference capability.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReadResolveFixCollectionCircularReferences.html" title="class in org.apache.river.concurrent">ReadResolveFixCollectionCircularReferences</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">The purpose of this class is to implement all the possible interfaces
that subclasses of ReferenceCollection may implement.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReadResolveFixForMapCircularReferences.html" title="class in org.apache.river.concurrent">ReadResolveFixForMapCircularReferences</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceBlockingDeque.html" title="class in org.apache.river.concurrent">ReferenceBlockingDeque</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceBlockingQueue.html" title="class in org.apache.river.concurrent">ReferenceBlockingQueue</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceCollection.html" title="class in org.apache.river.concurrent">ReferenceCollection</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">A Collection of Reference Objects, the developer may chose any Collection
implementation to store the References, which is passed in a runtime.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceCollectionRefreshAfterSerialization.html" title="class in org.apache.river.concurrent">ReferenceCollectionRefreshAfterSerialization</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceCollectionSerialData.html" title="class in org.apache.river.concurrent">ReferenceCollectionSerialData</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">This class is the serial form of ReferenceCollection and all it's subclasses.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceComparator.html" title="class in org.apache.river.concurrent">ReferenceComparator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceConcurrentMap.html" title="class in org.apache.river.concurrent">ReferenceConcurrentMap</a>&lt;K,V&gt;</td>
<td class="colLast">
<div class="block">A referenced hash map, that encapsulates and utilises any ConcurrentMap
implementation passed in at construction.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceConcurrentNavigableMap.html" title="class in org.apache.river.concurrent">ReferenceConcurrentNavigableMap</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceDeque.html" title="class in org.apache.river.concurrent">ReferenceDeque</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferencedQueue.html" title="class in org.apache.river.concurrent">ReferencedQueue</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceEntryFacade.html" title="class in org.apache.river.concurrent">ReferenceEntryFacade</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceFactory.html" title="class in org.apache.river.concurrent">ReferenceFactory</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">ReferenceFactory creates References, representing the various subclasses
of Reference, such as WEAK, SOFT and STRONG for
use in collections.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceIterator.html" title="class in org.apache.river.concurrent">ReferenceIterator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceList.html" title="class in org.apache.river.concurrent">ReferenceList</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">A List implementation that uses References.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceMap.html" title="class in org.apache.river.concurrent">ReferenceMap</a>&lt;K,V&gt;</td>
<td class="colLast">
<div class="block">ReferenceMap is a wrapper object that encapsulates another Map implementation
which it uses to store references.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceMapSerialData.html" title="class in org.apache.river.concurrent">ReferenceMapSerialData</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceNavigableMap.html" title="class in org.apache.river.concurrent">ReferenceNavigableMap</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceNavigableSet.html" title="class in org.apache.river.concurrent">ReferenceNavigableSet</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.html" title="class in org.apache.river.concurrent">ReferenceProcessor</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">ReferenceProcessor is responsible for creation and collection of References
on behalf of Reference Collection implementations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.CleanerTask.html" title="class in org.apache.river.concurrent">ReferenceProcessor.CleanerTask</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.CreateThread.html" title="class in org.apache.river.concurrent">ReferenceProcessor.CreateThread</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.EnqueGarbageTask.html" title="class in org.apache.river.concurrent">ReferenceProcessor.EnqueGarbageTask</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.FinalizerTask.html" title="class in org.apache.river.concurrent">ReferenceProcessor.FinalizerTask</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.SystemThreadFactory.html" title="class in org.apache.river.concurrent">ReferenceProcessor.SystemThreadFactory</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceProcessor.ThreadGroupAction.html" title="class in org.apache.river.concurrent">ReferenceProcessor.ThreadGroupAction</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceSerializationFactory.html" title="class in org.apache.river.concurrent">ReferenceSerializationFactory</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceSerializedForm.html" title="class in org.apache.river.concurrent">ReferenceSerializedForm</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">A temporary but functional replacement for ReferenceKey's.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceSet.html" title="class in org.apache.river.concurrent">ReferenceSet</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">A Referenced Set.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceSortedMap.html" title="class in org.apache.river.concurrent">ReferenceSortedMap</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferenceSortedSet.html" title="class in org.apache.river.concurrent">ReferenceSortedSet</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Referenced set supports sorting Object based on their natural ordering
or a Comparator, which must be wrapped in a ReferenceComparator.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/ReferrerDecorator.html" title="class in org.apache.river.concurrent">ReferrerDecorator</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">I've thought about refactoring so the equals and comparator behaviour is
implemented by the wrapper classes and only accepting References in
constructors as this would allow the use of standard java Reference classes
without extension, reducing the number of classes created,
however that would create serial form lock in.</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/RefReferenceQueue.html" title="class in org.apache.river.concurrent">RefReferenceQueue</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">A ReferenceQueue that implements RefQueue</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/SerializationOfReferenceCollection.html" title="class in org.apache.river.concurrent">SerializationOfReferenceCollection</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/SerializationOfReferenceMap.html" title="class in org.apache.river.concurrent">SerializationOfReferenceMap</a>&lt;K,V&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/SoftEqualityReference.html" title="class in org.apache.river.concurrent">SoftEqualityReference</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implemented as per Ref.SOFT</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/SoftIdentityReference.html" title="class in org.apache.river.concurrent">SoftIdentityReference</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implementation as per Ref.SOFT_IDENTITY</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/StrongReference.html" title="class in org.apache.river.concurrent">StrongReference</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implemented as per Ref.STRONG</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TempComparableReferrer.html" title="class in org.apache.river.concurrent">TempComparableReferrer</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TempEqualReferrer.html" title="class in org.apache.river.concurrent">TempEqualReferrer</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TempIdentityReferrer.html" title="class in org.apache.river.concurrent">TempIdentityReferrer</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TimedComparableReferrerDecorator.html" title="class in org.apache.river.concurrent">TimedComparableReferrerDecorator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TimedReferrer.html" title="class in org.apache.river.concurrent">TimedReferrer</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TimedReferrerDecorator.html" title="class in org.apache.river.concurrent">TimedReferrerDecorator</a>&lt;T&gt;</td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/TimedRefQueue.html" title="class in org.apache.river.concurrent">TimedRefQueue</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/WeakEqualityReference.html" title="class in org.apache.river.concurrent">WeakEqualityReference</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implemented as per Ref.WEAK</div>
</td>
</tr>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/WeakIdentityReference.html" title="class in org.apache.river.concurrent">WeakIdentityReference</a>&lt;T&gt;</td>
<td class="colLast">
<div class="block">Implemented as per Ref.WEAK_IDENTITY</div>
</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList">
<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Summary table, listing enums, and an explanation">
<caption><span>Enum Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Enum</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="../../../../org/apache/river/concurrent/Ref.html" title="enum in org.apache.river.concurrent">Ref</a></td>
<td class="colLast">
<div class="block">
Ref enum represents types of references available for use in java
collection framework implementations.</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="package.description">
<!-- -->
</a>
<h2 title="Package org.apache.river.concurrent Description">Package org.apache.river.concurrent Description</h2>
<div class="block"><div>
<p>Custard-apple is a utility that enables weak, soft, strong
or time references to be used in any collection implementing standard
Java Framework Interfaces</p>
<p>Expected behaviour of reference types may vary between platforms
and should not be depended upon other than; weak references will
be collected when no further strong references remain and soft
references may be collected at any time the JVM's available memory
is under pressure and the referent is softly reachable. Time
references should exhibit identical behaviour on all platforms and
will be collected after a period of inactivity, even while strong
references to those objects remain.</p>
<p>Due to the multi threaded nature of Custard-apple the
garbage collection thread may not see timestamp updates on soft
references when reading objects from collections, possibly causing those
soft references to be collected earlier than expected.</p>
<p>Large memory heaps cause issues with soft references in the Oracle
jvm, in this case use -XX:SoftRefLRUPolicyMSPerMB=1 to minimise
GC issues. At least until bug 6912889 is fixed.</p>
<p>Cliff Click's highly scalable hash map has been tested with
Custard-apple, also designed with scalability in mind.
Cleaning of garbage collected objects from collections is performed
by a background executor periodically. Internal implementations
produce significant quantities of short lived objects during
read operations that die young. These objects only ever live in
CPU cache, are not written back to shared memory and are never
shared between threads.</p>
<p>Although Custard-apple is intended to be scalable it
has not been tested on highly scalable hardware, if you have
access to such hardware, feel free to write tests and
contribute back performance improvements.</p>
<p>Timed references are provided for caching purposes and also
support cancellation of Future's, for example timed references can
be used in Queue's as a throttling mechanism, similar to a
network dropping packets. Referent Future tasks will be cancelled by the
cleaning thread when enqueued.</p>
<p>Serialization support for Map's will be implemented in a future
release. Serialization of other collection types is supported,
provided the underlying collection also supports Serialization.</p>
<p>Serialized form has been implemented as a separate concern
using the
<link><i><a href="http://wiki.apache.org/river/Serialization">
Serialization Builder Pattern</a></i>
with the readResolve() workaround.
</p>
<p>Package private implementation classes are not tied to
serial form. These classes are not published by implementing
Serializable. Future versions of this library, may
utilise a completely different class or classes upon deserialisation.
The serial form may also change between releases in ways that would
normally break compatibility, multiple serial forms may exist for
one class in multiple versions of it, without ever breaking
compatibility. Currently all classes that implement Collection
share an identical serial form.</p>
<p>Serialization compatibility is guaranteed between different releases.</p>
</div></div>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li class="navBarCell1Rev">Package</li>
<li>Class</li>
<li><a href="package-use.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/river/collection/package-summary.html">Prev&nbsp;Package</a></li>
<li><a href="../../../../org/apache/river/config/package-summary.html">Next&nbsp;Package</a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/river/concurrent/package-summary.html" target="_top">Frames</a></li>
<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright 2007-2013, multiple authors.<br>Licensed under the <a href=http://www.apache.org/licenses/LICENSE-2.0 target=child >Apache License, Version 2.0</a>, see the <a href=../../../../doc-files/NOTICE target=child >NOTICE</a> file for attributions.</small></p>
</body>
</html>