On 5/25/06, Mikhail Loenko <[EMAIL PROTECTED]> wrote:

> 2) Try to make all objects used for synchronization 'final'  (we have a
lot
> of non-final monitors in API, so we give a chance to bugs)

Could you please explain with details and an example?


This is not a bug (E.g. ExemptionMechanism:47, BeanContextSupport:149) but
such code may lead (in theory or in future) to deadlock because it allows
different threads to use different locks in the same object instance. Also
when you analyse 'synchronized' pattern the 'final' modifier for a lock
really helps in understanding code and locks logic.


3) Never call to Boolean of Integer contructors (performance issue, there
> are a lot of such calls in our API)

Again, an example would be useful.


grep "new Boolean" or "new Integer" over the sources. You fill find > 100
samples. New object creation when it's possible to use static and cached
instances is a bad practice from the performance point of view.

4) Never do manual array copying (our crypto API does )

What do you mean by 'manual array copying'? How it should be done and why?


This is manual copying of arrays in loop instead of System.arraycopy() call
(System.arraycopy() can be implemented as performance primitive in VM or
JIT)
Check this code as example: ExemptionMechanism:249, Statement:164


Thanks,
Mikhail




--
Mikhail Fursov
Intel Middleware Products Division

Reply via email to