Use Lock/Condition. Overkill, but not necessarily any uglier.