StrictMath.java: Typo fix.
* java/lang/StrictMath.java: Typo fix. * java/lang/Math.java: Typo fix. 2003-08-26 Stephen Crawley <crawley@dstc.edu.au> * java/lang/ThreadGroup.java (removeThread): null the 'group' field of the removed Thread. 2003-08-26 Mark Wielaard <mark@klomp.org> Reported by David Holmes <dholmes@dltech.com.au>. * java/lang/InheritableThreadLocal.java (threadMap): Wrap inside Collections.synchronizedMap. * java/lang/ThreadLocal.java (valueMap): Likewise. From-SVN: r70828
This commit is contained in:
parent
228e7b6256
commit
777bb1d438
@ -1,3 +1,20 @@
|
|||||||
|
2003-08-26 Tom Tromey <tromey@redhat.com>
|
||||||
|
|
||||||
|
* java/lang/StrictMath.java: Typo fix.
|
||||||
|
* java/lang/Math.java: Typo fix.
|
||||||
|
|
||||||
|
2003-08-26 Stephen Crawley <crawley@dstc.edu.au>
|
||||||
|
|
||||||
|
* java/lang/ThreadGroup.java (removeThread): null the 'group' field
|
||||||
|
of the removed Thread.
|
||||||
|
|
||||||
|
2003-08-26 Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
|
Reported by David Holmes <dholmes@dltech.com.au>.
|
||||||
|
* java/lang/InheritableThreadLocal.java (threadMap): Wrap inside
|
||||||
|
Collections.synchronizedMap.
|
||||||
|
* java/lang/ThreadLocal.java (valueMap): Likewise.
|
||||||
|
|
||||||
2003-08-26 Mark Wielaard <mark@klomp.org>
|
2003-08-26 Mark Wielaard <mark@klomp.org>
|
||||||
|
|
||||||
* java/security/acl/Acl.java: Fix broken p tag.
|
* java/security/acl/Acl.java: Fix broken p tag.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* InheritableThreadLocal -- a ThreadLocal which inherits values across threads
|
/* InheritableThreadLocal -- a ThreadLocal which inherits values across threads
|
||||||
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
@ -37,9 +37,11 @@ exception statement from your version. */
|
|||||||
|
|
||||||
package java.lang;
|
package java.lang;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.Map;
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,7 +69,8 @@ public class InheritableThreadLocal extends ThreadLocal
|
|||||||
* List can be collected, too. Maps to a list in case the user overrides
|
* List can be collected, too. Maps to a list in case the user overrides
|
||||||
* equals.
|
* equals.
|
||||||
*/
|
*/
|
||||||
private static final WeakHashMap threadMap = new WeakHashMap();
|
private static final Map threadMap
|
||||||
|
= Collections.synchronizedMap(new WeakHashMap());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new InheritableThreadLocal that has no values associated
|
* Creates a new InheritableThreadLocal that has no values associated
|
||||||
@ -77,7 +80,7 @@ public class InheritableThreadLocal extends ThreadLocal
|
|||||||
{
|
{
|
||||||
Thread currentThread = Thread.currentThread();
|
Thread currentThread = Thread.currentThread();
|
||||||
// Note that we don't have to synchronize, as only this thread will
|
// Note that we don't have to synchronize, as only this thread will
|
||||||
// ever modify the returned heritage.
|
// ever modify the returned heritage and threadMap is a synchronizedMap.
|
||||||
List heritage = (List) threadMap.get(currentThread);
|
List heritage = (List) threadMap.get(currentThread);
|
||||||
if (heritage == null)
|
if (heritage == null)
|
||||||
{
|
{
|
||||||
@ -114,7 +117,7 @@ public class InheritableThreadLocal extends ThreadLocal
|
|||||||
// The currentThread is the parent of the new thread.
|
// The currentThread is the parent of the new thread.
|
||||||
Thread parentThread = Thread.currentThread();
|
Thread parentThread = Thread.currentThread();
|
||||||
// Note that we don't have to synchronize, as only this thread will
|
// Note that we don't have to synchronize, as only this thread will
|
||||||
// ever modify the returned heritage.
|
// ever modify the returned heritage and threadMap is a synchronizedMap.
|
||||||
ArrayList heritage = (ArrayList) threadMap.get(parentThread);
|
ArrayList heritage = (ArrayList) threadMap.get(parentThread);
|
||||||
if (heritage != null)
|
if (heritage != null)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* java.lang.Math -- common mathematical functions, native allowed
|
/* java.lang.Math -- common mathematical functions, native allowed
|
||||||
Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
|
Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
@ -521,7 +521,7 @@ public final class Math
|
|||||||
* double to <code>x / y</code> (ties go to the even n); for a zero
|
* double to <code>x / y</code> (ties go to the even n); for a zero
|
||||||
* remainder, the sign is that of <code>x</code>. If either argument is NaN,
|
* remainder, the sign is that of <code>x</code>. If either argument is NaN,
|
||||||
* the first argument is infinite, or the second argument is zero, the result
|
* the first argument is infinite, or the second argument is zero, the result
|
||||||
* is NaN; if x is finite but y is infinte, the result is x. This is
|
* is NaN; if x is finite but y is infinite, the result is x. This is
|
||||||
* accurate within the limits of doubles.
|
* accurate within the limits of doubles.
|
||||||
*
|
*
|
||||||
* @param x the dividend (the top half)
|
* @param x the dividend (the top half)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* java.lang.StrictMath -- common mathematical functions, strict Java
|
/* java.lang.StrictMath -- common mathematical functions, strict Java
|
||||||
Copyright (C) 1998, 2001, 2002 Free Software Foundation, Inc.
|
Copyright (C) 1998, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
@ -1053,7 +1053,7 @@ public final strictfp class StrictMath
|
|||||||
* double to <code>x / y</code> (ties go to the even n); for a zero
|
* double to <code>x / y</code> (ties go to the even n); for a zero
|
||||||
* remainder, the sign is that of <code>x</code>. If either argument is NaN,
|
* remainder, the sign is that of <code>x</code>. If either argument is NaN,
|
||||||
* the first argument is infinite, or the second argument is zero, the result
|
* the first argument is infinite, or the second argument is zero, the result
|
||||||
* is NaN; if x is finite but y is infinte, the result is x.
|
* is NaN; if x is finite but y is infinite, the result is x.
|
||||||
*
|
*
|
||||||
* @param x the dividend (the top half)
|
* @param x the dividend (the top half)
|
||||||
* @param y the divisor (the bottom half)
|
* @param y the divisor (the bottom half)
|
||||||
|
@ -718,6 +718,7 @@ public class ThreadGroup
|
|||||||
if (groups == null)
|
if (groups == null)
|
||||||
return;
|
return;
|
||||||
threads.remove(t);
|
threads.remove(t);
|
||||||
|
t.group = null;
|
||||||
// Daemon groups are automatically destroyed when all their threads die.
|
// Daemon groups are automatically destroyed when all their threads die.
|
||||||
if (daemon_flag && groups.size() == 0 && threads.size() == 0)
|
if (daemon_flag && groups.size() == 0 && threads.size() == 0)
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* ThreadLocal -- a variable with a unique value per thread
|
/* ThreadLocal -- a variable with a unique value per thread
|
||||||
Copyright (C) 2000, 2002 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GNU Classpath.
|
This file is part of GNU Classpath.
|
||||||
|
|
||||||
@ -37,6 +37,7 @@ exception statement from your version. */
|
|||||||
|
|
||||||
package java.lang;
|
package java.lang;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.WeakHashMap;
|
import java.util.WeakHashMap;
|
||||||
|
|
||||||
@ -101,7 +102,7 @@ public class ThreadLocal
|
|||||||
* <code>set(Thread, Object)</code> and <code>get(Thread)</code> methods
|
* <code>set(Thread, Object)</code> and <code>get(Thread)</code> methods
|
||||||
* access it. Package visible for use by InheritableThreadLocal.
|
* access it. Package visible for use by InheritableThreadLocal.
|
||||||
*/
|
*/
|
||||||
final Map valueMap = new WeakHashMap();
|
final Map valueMap = Collections.synchronizedMap(new WeakHashMap());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ThreadLocal object without associating any value to it yet.
|
* Creates a ThreadLocal object without associating any value to it yet.
|
||||||
@ -135,7 +136,7 @@ public class ThreadLocal
|
|||||||
{
|
{
|
||||||
Thread currentThread = Thread.currentThread();
|
Thread currentThread = Thread.currentThread();
|
||||||
// Note that we don't have to synchronize, as only this thread will
|
// Note that we don't have to synchronize, as only this thread will
|
||||||
// ever modify the returned value.
|
// ever modify the returned value and valueMap is a synchronizedMap.
|
||||||
Object value = valueMap.get(currentThread);
|
Object value = valueMap.get(currentThread);
|
||||||
if (value == null)
|
if (value == null)
|
||||||
{
|
{
|
||||||
@ -156,7 +157,7 @@ public class ThreadLocal
|
|||||||
public void set(Object value)
|
public void set(Object value)
|
||||||
{
|
{
|
||||||
// Note that we don't have to synchronize, as only this thread will
|
// Note that we don't have to synchronize, as only this thread will
|
||||||
// ever modify the returned value.
|
// ever modify the returned value and valueMap is a synchronizedMap.
|
||||||
valueMap.put(Thread.currentThread(), value == null ? NULL : value);
|
valueMap.put(Thread.currentThread(), value == null ? NULL : value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user