There are infinite choices about how synchronization can be acheived;
here you have only shown synchronization on 'this', but of course any
object can be used to synchronize on.
So there is no way the IDE can make a choice about the synchronization
mechanism to use, therefore it should just leave it out, and trust the
developer to put in the correct synchronization at the necessary points.
Maybe a comment should be placed in the get method '// WARNING - not
thread safe!' for any novice users who think that IDEA is going to do
their job for them ;)
Alexey Efimov wrote:
> You must use and this bottle neck:
> public synchronized Object getValue() {
> if (_value == null) {
> _value = new ExpensiveObject();
> }
> return value;
> }
>
> Or this:
> public Object getValue() {
> if (_value == null) {
> synchronized (this) {
> if (_value == null) {
> _value = new ExpensiveObject();
> }
> }
> }
> return value;
> }
>
> But this is have "issues" and may not work on multi processor systems with
> write reordering.
>
> So,
> Is it realy needed? :)
>
> "Nathan Brown" <[EMAIL PROTECTED]> wrote in message
> [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
>
>>It would be great if the "Encapsulate fields" refactoring could also
>>support lazy initialization when an initialization statement exists at
>>the field declaration and the field is of an object type.
>>
>>Using this option, the existing initialization would be moved into the
>>get method so that :
>>
>>private Object _value = new ExpensiveObject();
>>
>>would be transformed to
>>
>>private Object _value;
>>
>>public Object getValue()
>>{
>> if (_value == null) {
>> _value = new ExpensiveObject();
>> }
>> return value;
>>}
>>
>>N.
>>
>
>
>
_______________________________________________
Eap-features mailing list
[EMAIL PROTECTED]
http://lists.jetbrains.com/mailman/listinfo/eap-features