[Java] Performances en Java - L'influcence du mot clé synchronized (1)
mardi 2 juin 2009
Le mot clé synchronized permet de s'assurer qu'une méthode ou un bloc de code se sera pas accédé par deux Thread en même temps. Pour plus de détails, voyez cet article sur Développez.com[htt.... Voici le test effectué :
public class SynchronizeBench { public SynchronizeBench() { } public void a() { } public synchronized void b() { } static void test(SynchronizeBench bench, boolean a) { int i = 500000; long time = System.currentTimeMillis(); while (i > 0) { if (a) { bench.a(); } else { bench.b(); } i--; } time = System.currentTimeMillis() - time; System.out.println("Methode "+(a?"a":"b")+" : "+time+" ms"); } public static void main(String[] args) { SynchronizeBench bench = new SynchronizeBench(); test(bench, true); test(bench, false); } }
Résultats
- Méthode a (sans synchronisation) : 0 miilisecondes
- Méthode b (avec synchronisation) : entre 14 et 17 millisecondes
Conclusion
L'utilisation du mot clé synchronized ralenti en soi l'accès à une méthode.