mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-10 07:39:16 +00:00
ICU-12562 Applied the fix equivalent to the android patch to resolve TimeZone#getDefault() threading issue.
X-SVN-Rev: 39809
This commit is contained in:
parent
6b64c3bbb8
commit
76d9f7e502
1 changed files with 18 additions and 9 deletions
|
@ -927,19 +927,28 @@ abstract public class TimeZone implements Serializable, Cloneable, Freezable<Tim
|
|||
* @stable ICU 2.0
|
||||
*/
|
||||
public static TimeZone getDefault() {
|
||||
if (defaultZone == null) {
|
||||
synchronized(TimeZone.class) {
|
||||
if (defaultZone == null) {
|
||||
if (TZ_IMPL == TIMEZONE_JDK) {
|
||||
defaultZone = new JavaTimeZone();
|
||||
} else {
|
||||
java.util.TimeZone temp = java.util.TimeZone.getDefault();
|
||||
defaultZone = getFrozenTimeZone(temp.getID());
|
||||
// Copy the reference to the current defaultZone,
|
||||
// so it won't be affected by setDefault().
|
||||
TimeZone tmpDefaultZone = defaultZone;
|
||||
|
||||
if (tmpDefaultZone == null) {
|
||||
synchronized (java.util.TimeZone.class) {
|
||||
synchronized(TimeZone.class) {
|
||||
tmpDefaultZone = defaultZone;
|
||||
if (tmpDefaultZone == null) {
|
||||
if (TZ_IMPL == TIMEZONE_JDK) {
|
||||
tmpDefaultZone = new JavaTimeZone();
|
||||
} else {
|
||||
java.util.TimeZone temp = java.util.TimeZone.getDefault();
|
||||
tmpDefaultZone = getFrozenTimeZone(temp.getID());
|
||||
}
|
||||
defaultZone = tmpDefaultZone;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return defaultZone.cloneAsThawed();
|
||||
|
||||
return tmpDefaultZone.cloneAsThawed();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue