JDK-8074023: Clock.system(ZoneId) could be optimized to always return the same clock for a given zone

Peter Levart peter.levart at gmail.com
Thu Apr 23 21:20:00 UTC 2015



On 04/23/2015 10:33 PM, Roger Riggs wrote:
> Hi Peter,
>
> The defaultTimeZone is cached in java.util.TimeZone the first time it 
> is referenced
> and is not updated after that.  See java.util.TimeZone.getDefaultRef().
>
> Regards, Roger
>

But any code (with enough privilege) can update it:

abstract public class TimeZone .... {

     public static void setDefault(TimeZone zone)
     {
         SecurityManager sm = System.getSecurityManager();
         if (sm != null) {
             sm.checkPermission(new PropertyPermission
                                ("user.timezone", "write"));
         }
         defaultTimeZone = zone;
     }



Peter

>
> On 4/23/2015 4:11 PM, Peter Levart wrote:
>>
>>
>> On 04/23/2015 09:53 PM, nadeesh tv wrote:
>>> Hi all,
>>>
>>> Please review this minor change which  optimized 
>>> Clock.systemDefaultZone() and Clock.system(ZoneId)  to avoid 
>>> creating new instance of Clock.SystemClock every time they are called.
>>>
>>> Bug ID :  https://bugs.openjdk.java.net/browse/JDK-8074023
>>>
>>> Webrev : http://cr.openjdk.java.net/~rriggs/nadeesh-tv-8074023/
>>>
>>
>> Hi Nadeesh,
>>
>> What happens if ZondeId.systemDefault() changes 
>> (TimeZone.setDefault()) *after* Clock class has already been 
>> initialized?
>>
>> Regards, Peter
>>
>




More information about the core-libs-dev mailing list