volatile c vs java