Links

  • 1. Sogeti
  • 2. JBoss
  • 3. IBM
  • 4. Oracle
  • 5. SpringSource
  • 6. NL-JUG
  • 7. Java

Archives

Syndication  RSS 2.0

RSS 1.0
RSS 2.0

Bookmark this site

Add 'JCN Blog' site to delicious  Add 'JCN Blog' site to technorati  Add 'JCN Blog' site to digg  Add 'JCN Blog' site to dzone

Posted by jcn at 22:18 on Wednesday 13 December    Add 'Effective Concurrent Java' site to delicious  Add 'Effective Concurrent Java' site to technorati  Add 'Effective Concurrent Java' site to digg  Add 'Effective Concurrent Java' site to dzone

Brian Goetz was ook op Javapolis aanwezig en gaf twee sessies. Zijn eerste sessie ging over concurrency. Hij behandelde verschillende regels die je in je achterhoofd moet houden als je te maken hebt met concurrency. Een aantal die voorbij kwamen:

  • encapsulate data: hoe minder data er is waar andere klassen makkelijk bij kunnen (bijv. public static variabelen), hoe minder je rekening hoeft te te houden met synchronization.
  • encapsulate synchronization: synchronization is eigenlijk een set afspraken en als 38 van de 40 methoden in een klasse zich er aan houden en de laatste 2 niet, is er alsnog een probleem met die klasse. Hij liet ook wat voorbeelden zien van scenario’s die vaak fout gingen en hoe ze verbeterd konden worden.
  • document: documenteer in klassen hoe de synchronisatie afgehandeld is (of niet). Hij stelde hier verschillende annotations voor zoals @ThreadSafe, @NotThreadSafe en @Immutable om voor anderen duidelijk te maken in hoeverre de code rekening houdt met synchronization. Ook merkte hij op dat dit soort documentatie voor de JDK ook vaak ontbrak.
  • prefer immutable objects: objecten waarvan de state niet verandert hoeven niet gesynchroniseerd te worden. Hij raadde dan ook om velden zoveel final te maken.
  • find the serialisation: hiermee bedoelde hij niet het gebruik van Serialization klassen, maar het identificeren welke gedeeltes van je code serieel ipv. parallel uitgevoerd worden en vervolgens die stukken te verkleinen. Bijvoorbeeld door kleinere ‘synchronized’ blokken te gebruiken. Ook ging hij in op wat er door de compiler automatisch geoptimaliseerd kan worden.

© 2020 Java Competence Network. All Rights Reserved.