Programspråket Java stöder multitrådning där trådarna interagerar sinsemellan via läsning/skrivning av delade data. De flesta aktuella arbeten på multitrådade Java programverifiering antar en modell för utförande som bygger på interleating av verksamheten i de enskilda trådarna. Men Java språkspecifikation (som eventuella implementationer av Java multithreading måste följa) stöder en svagare modell för utförande, kallas Java Memory Model (JMM). JMM tillåter viss omordning av operationer inom en tråd och tillåter därmed fler beteenden än den interleaving baserade utförandemodellen. Därför, program verifieras genom att anta interleaded tråd exekvering kan inte bete sig korrekt för vissa Java multithreading implementationer. Den största svårigheten med JMM är att den informellt beskrivs i en abstrakt regelbaserad deklarativ stil, som är olämplig för formell kontroll. I detta dokument utvecklar vi en likvärdig formell tillämpningsbar specifikation av JMM. Vår specifikation är operativ och använder bevakade kommandon. Vi använder sedan denna körbara rnodel för att verifiera populära idiomer för programvarukonstruktion (vanligtvis använda programfragment/mönster) för multitrådad Java. Vår prototyp kontrollör verktyg upptäcker en bugg i den allmänt använda "DoubleChecked Locking" idiom, som kontrollörer baserade på interleaving utförande modell kan omöjligt upptäcka.
I synnerhet har vårt tidigare arbete REF integrerat en operativ specifikation av Java Memory Model för kontroll av programvarumodeller.
Specifying multithreaded Java semantics for program verification
{'venue': "ICSE '02", 'journal': None, 'mag_field_of_study': ['Computer Science']}