This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit bdce53dfc40a2021110be335ee02b4172ef0f72a
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Fri Oct 18 16:18:32 2019 +0200

    Clarification in javadoc.
---
 .../java/org/apache/sis/internal/system/DaemonThread.java   |  4 +++-
 .../main/java/org/apache/sis/util/collection/WeakEntry.java | 13 +++++++------
 .../java/org/apache/sis/util/collection/WeakHashSet.java    |  7 ++++++-
 .../org/apache/sis/util/collection/WeakValueHashMap.java    |  7 ++++++-
 4 files changed, 22 insertions(+), 9 deletions(-)

diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DaemonThread.java
 
b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DaemonThread.java
index 136293c..b1f2801 100644
--- 
a/core/sis-utility/src/main/java/org/apache/sis/internal/system/DaemonThread.java
+++ 
b/core/sis-utility/src/main/java/org/apache/sis/internal/system/DaemonThread.java
@@ -59,6 +59,8 @@ abstract class DaemonThread extends Thread {
 
     /**
      * Creates a new daemon thread. This constructor sets the daemon flag to 
{@code true}.
+     * The thread will be allocated a small stack size on the assumption that 
it will execute
+     * only small and quick methods, without deep nesting levels.
      *
      * <p>We need to maintain a list of daemon threads created by each SIS 
module in order to
      * kill them at shutdown time (not strictly necessary for pure JSEE 
applications, but
@@ -88,7 +90,7 @@ abstract class DaemonThread extends Thread {
      *                            Each SIS module shall maintain its own 
chain, if any.
      */
     protected DaemonThread(final String name, final DaemonThread 
lastCreatedDaemon) {
-        super(Threads.DAEMONS, name);
+        super(Threads.DAEMONS, null, name, 16*1024);    // Small (16 kb) stack 
size.
         previous = lastCreatedDaemon;
         setDaemon(true);
     }
diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakEntry.java 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakEntry.java
index cfcf10f..9665ca4 100644
--- 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakEntry.java
+++ 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakEntry.java
@@ -57,11 +57,11 @@ abstract class WeakEntry<E> extends WeakReference<E> 
implements Disposable {
 
     /**
      * Number of nanoseconds to wait before to rehash the table for reducing 
its size.
-     * When the garbage collector collects a lot of elements, we will at least 
this amount of time
-     * before rehashing the tables, in case lot of news elements are going to 
be added. Without this
-     * field, we noticed many "reduce", "expand", "reduce", "expand", 
<i>etc.</i> cycles.
+     * When the garbage collector collects a lot of elements, we will wait at 
least this amount of time
+     * before to rehash the tables, in case lot of news elements are going to 
be added. We noticed that
+     * in the absence of delay, there is a lot of "reduce", "expand", 
"reduce", "expand", <i>etc.</i> cycles.
      */
-    static final long REHASH_DELAY = 4000000000L;
+    static final long REHASH_DELAY = 4000_000_000L;                     // 4 
seconds.
 
     /**
      * The logger where to logs collection events, if logging at the finest 
level is enabled.
@@ -70,6 +70,7 @@ abstract class WeakEntry<E> extends WeakReference<E> 
implements Disposable {
 
     /**
      * The next entry, or {@code null} if there is none.
+     * This is used when more than one entry has the same hash code value.
      */
     WeakEntry<E> next;
 
@@ -123,7 +124,7 @@ abstract class WeakEntry<E> extends WeakReference<E> 
implements Disposable {
                 } else {
                     table[removeAt] = e.next;
                 }
-                // We can't continue the loop pass that point, since 'e' is no 
longer valid.
+                // We can not continue the loop pass that point, since `e` is 
no longer valid.
                 return true;
             }
             prev = e;
@@ -165,7 +166,7 @@ abstract class WeakEntry<E> extends WeakReference<E> 
implements Disposable {
         for (WeakEntry<E> next : oldTable) {
             while (next != null) {
                 final WeakEntry<E> e = next;
-                next = next.next;                           // We keep 'next' 
right now because its value will change.
+                next = next.next;                           // Fetch `next` 
now because its value will change.
                 final int index = e.hash % table.length;
                 e.next = table[index];
                 table[index] = e;
diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakHashSet.java
 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakHashSet.java
index c735c7e..c4b404f 100644
--- 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakHashSet.java
+++ 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakHashSet.java
@@ -107,7 +107,8 @@ public class WeakHashSet<E> extends AbstractSet<E> 
implements CheckedContainer<E
     private Entry[] table;
 
     /**
-     * Number of non-null elements in {@link #table}.
+     * Number of non-null elements in {@link #table}. This is used for 
determining
+     * when {@link WeakEntry#rehash(WeakEntry[], int, String)} needs to be 
invoked.
      */
     private int count;
 
@@ -161,6 +162,8 @@ public class WeakHashSet<E> extends AbstractSet<E> 
implements CheckedContainer<E
     /**
      * Invoked by {@link Entry} when an element has been collected by the 
garbage
      * collector. This method removes the weak reference from the {@link 
#table}.
+     *
+     * @param  toRemove  the entry to remove from this map.
      */
     private synchronized void removeEntry(final Entry toRemove) {
         assert isValid();
@@ -182,6 +185,8 @@ public class WeakHashSet<E> extends AbstractSet<E> 
implements CheckedContainer<E
     /**
      * Checks if this {@code WeakHashSet} is valid. This method counts the 
number of elements and
      * compares it to {@link #count}. This method is invoked in assertions 
only.
+     *
+     * @return whether {@link #count} matches the expected value.
      */
     @Debug
     private boolean isValid() {
diff --git 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakValueHashMap.java
 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakValueHashMap.java
index c550061..119bbd3 100644
--- 
a/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakValueHashMap.java
+++ 
b/core/sis-utility/src/main/java/org/apache/sis/util/collection/WeakValueHashMap.java
@@ -196,7 +196,8 @@ public class WeakValueHashMap<K,V> extends AbstractMap<K,V> 
{
     private Entry[] table;
 
     /**
-     * Number of non-null elements in {@link #table}.
+     * Number of non-null elements in {@link #table}. This is used for 
determining
+     * when {@link WeakEntry#rehash(WeakEntry[], int, String)} needs to be 
invoked.
      */
     private int count;
 
@@ -271,6 +272,8 @@ public class WeakValueHashMap<K,V> extends AbstractMap<K,V> 
{
     /**
      * Invoked by {@link Entry} when an element has been collected by the 
garbage
      * collector. This method removes the weak reference from the {@link 
#table}.
+     *
+     * @param  toRemove  the entry to remove from this map.
      */
     @SuppressWarnings("unchecked")
     private synchronized void removeEntry(final Entry toRemove) {
@@ -293,6 +296,8 @@ public class WeakValueHashMap<K,V> extends AbstractMap<K,V> 
{
     /**
      * Checks if this {@code WeakValueHashMap} is valid. This method counts 
the number of elements
      * and compares it to {@link #count}. This method is invoked in assertions 
only.
+     *
+     * @return whether {@link #count} matches the expected value.
      */
     @Debug
     final boolean isValid() {

Reply via email to