What I basically did was to make it an instance variable, and then have a
static synchronized method that does the parsing.

I haven't been spending too thought on the problem, as it happens very
rarely, and is not due to high load, but rather due to the client-side not
handling double-clicks correctly.

But I will spend some time later today to fix it properly so that I will
handle it correctly in the future.

Thanks for the help.

On 27 January 2011 10:39, Gary Jacobson <[email protected]> wrote:

> The simplest fix is to keep the SimpleDateFormat static, but instead of
> calling dateFormat.parse() directly, make a static synchronized parseDate()
> method to call it.
>
>
> On Thu, Jan 27, 2011 at 10:37 AM, Dr Heinz M. Kabutz <
> [email protected]> wrote:
>
>>  It's not static that's the problem, but multi-threaded access.  If your
>> object is still being shared by multiple threads, you still have the bug in
>> your code.
>>
>> Regards
>>
>> Heinz
>> --
>> Dr Heinz M. Kabutz (PhD CompSci)
>> Author of "The Java(tm) Specialists' Newsletter"
>> Sun Java Champion
>> IEEE Certified Software Development Professionalhttp://www.javaspecialists.eu
>> Tel: +30 69 72 850 460
>> Skype: kabutz
>>
>>
>>
>> On 1/27/11 9:05 AM, Jason Purcell wrote:
>>
>> Thanks.
>>
>> I just made it non-static as a quick-fix.
>>
>> On 26 January 2011 17:21, Dr Heinz M. Kabutz <[email protected]>wrote:
>>
>>>  You could stick the instance in a ThreadLocal, that allows you to reuse
>>> it without worrying about concurrency.
>>>
>>> Or you could use the Apache date parser.
>>>
>>> Regards
>>>
>>> Heinz
>>> --
>>> Dr Heinz M. Kabutz (PhD CompSci)
>>> Author of "The Java(tm) Specialists' Newsletter"
>>> Sun Java Champion
>>> IEEE Certified Software Development 
>>> Professionalhttp://www.javaspecialists.eu
>>> Tel: +30 69 72 850 460
>>> Skype: kabutz
>>>
>>>
>>>
>>> On 1/26/11 3:44 PM, Jason Purcell wrote:
>>>
>>> I just read the same thing somewhere else now.
>>>
>>> Always thought it was a good idea to re-use it, but I guess it's not.
>>>
>>> Thanks for the info!!
>>>
>>> I will implement the changes and see how things go.
>>>
>>> On 26 January 2011 15:41, Bruce Stewart <[email protected]> wrote:
>>>
>>>> Hi Jason, the SimpleDateFormat class is not thread safe. If you were not
>>>> aware of this you may have multiple threads accessing the the dateFormat
>>>> instance, and this is exactly the sort of error that can occur.
>>>>
>>>>  On Wed, Jan 26, 2011 at 3:36 PM, Jason Purcell <[email protected]>wrote:
>>>>
>>>>>  Hi there...
>>>>>
>>>>> I am getting intermittent exceptions when parsing dates.
>>>>>
>>>>> My formatter is declared as follows:
>>>>>
>>>>>    SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
>>>>>    dateFormat.setLenient(false);
>>>>>
>>>>> These are some of the exceptions that have been thrown:
>>>>>
>>>>>    java.text.ParseException: Unparseable date: "02/04/1980"
>>>>>    java.text.ParseException: Unparseable date: "20/06/1985"
>>>>>    java.text.ParseException: Unparseable date: "05/03/1990"
>>>>>    java.text.ParseException: Unparseable date: "14/09/1973"
>>>>>    java.text.ParseException: Unparseable date: "25/01/2011"
>>>>>    java.text.ParseException: Unparseable date: "25/01/2011"
>>>>>    java.text.ParseException: Unparseable date: "09/07/1965"
>>>>>    java.text.ParseException: Unparseable date: "07/10/1974"
>>>>>    java.text.ParseException: Unparseable date: "27/08/1966"
>>>>>
>>>>> My unit tests pass when using the "unparseable" dates above, and in
>>>>> production dates parse correctly basically 99.999% of the time in the
>>>>> relevant piece of code.
>>>>>
>>>>> As an example, the following dates parse correctly:
>>>>>
>>>>> 07/06/1978
>>>>> 14/06/1981
>>>>> 04/01/1988
>>>>> 03/10/1965
>>>>> 12/09/1977
>>>>> 30/01/1985
>>>>>
>>>>> Has anyone come across this before?
>>>>>
>>>>> Is there a problem with using SimpleDateFormat.setLenient() perhaps?
>>>>>
>>>>> Regards,
>>>>> Jason.
>>>>>
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "CTJUG Tech" group.
>>>>> To post to this group, send email to [email protected]
>>>>> To unsubscribe from this group, send email to
>>>>> [email protected]<ctjug-tech%[email protected]>
>>>>> For more options, visit this group at
>>>>> http://groups.google.com/group/CTJUG-Tech?hl=en
>>>>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>>>>> For jobs see http://jobs.gamatam.com/
>>>>>
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "CTJUG Tech" group.
>>>> To post to this group, send email to [email protected]
>>>> To unsubscribe from this group, send email to
>>>> [email protected]<ctjug-tech%[email protected]>
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/CTJUG-Tech?hl=en
>>>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>>>> For jobs see http://jobs.gamatam.com/
>>>>
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "CTJUG Tech" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]
>>> For more options, visit this group at
>>> http://groups.google.com/group/CTJUG-Tech?hl=en
>>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>>> For jobs see http://jobs.gamatam.com/
>>>
>>>    --
>>> You received this message because you are subscribed to the Google Groups
>>> "CTJUG Tech" group.
>>> To post to this group, send email to [email protected]
>>> To unsubscribe from this group, send email to
>>> [email protected]<ctjug-tech%[email protected]>
>>> For more options, visit this group at
>>> http://groups.google.com/group/CTJUG-Tech?hl=en
>>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>>> For jobs see http://jobs.gamatam.com/
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "CTJUG Tech" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/CTJUG-Tech?hl=en
>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>> For jobs see http://jobs.gamatam.com/
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "CTJUG Tech" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]<ctjug-tech%[email protected]>
>> For more options, visit this group at
>> http://groups.google.com/group/CTJUG-Tech?hl=en
>> For Cape Town Java User Group home page see http://www.ctjug.org.za/
>> For jobs see http://jobs.gamatam.com/
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "CTJUG Tech" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<ctjug-tech%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/CTJUG-Tech?hl=en
> For Cape Town Java User Group home page see http://www.ctjug.org.za/
> For jobs see http://jobs.gamatam.com/
>

-- 
You received this message because you are subscribed to the Google Groups 
"CTJUG Tech" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/CTJUG-Tech?hl=en
For Cape Town Java User Group home page see http://www.ctjug.org.za/
For jobs see http://jobs.gamatam.com/

Reply via email to