optimized coding
added volatile
added hashCode and equals
optimized coding
added volatile
added hashCode and equals