new CopyOnWriteArrayList()

In IdeFICS (mijn grails gebaseerde online chess client) had ik last van ConcurrentModificationExceptions in mijn code omdat de ene thread nieuwe waardes in de console buffer schreef terwijl de applicaties ze las. Niet geheel verwonderlijk natuurlijk. Ik heb dit probleem nu opgelost door gebruik te maken van de CopyOnWriteArrayList class die in java 5 in het concurrent package is geïntroduceerd. Deze class is een thread-safe variant van de standaard ArrayList, die ik hiervoor gebruikte. Het werkt prima! Scheelt een hoop werk om dit op deze manier op te lossen.

Nieuwe code in de FreeChessService:


def buffer = new CopyOnWriteArrayList()
def gameMoves = new CopyOnWriteArrayList()

Ik wil ter leering ende vermaak ga ik nog even naar de source van deze class kijken.

screenshot idefics met lecturebot

Idefics ontwikkeling

Om Grails een beetje onder de knie te krijgen (nu ik Groovy een beetje ken) ben ik sinds een tijdje bezig met een online schaak web applicatie die het mogelijk maakt om op de Freechess internet chess server te kunnen schaken. Mijn idee is om een single-page applicatie te maken die m.b.v. Grails en Ajax een mooie omgeving biedt om te kunnen schaken met andere schaak liefhebbers. Ik heb al een paar jaar een account bij FICS maar de laatste tijd heb ik eigenlijk niet meer geschaakt, m’n rating is dan ook naar een nieuw dieptepunt gezakt.