fix bug, should using for to match conditon
make constant with final
refactor using BoundedBuffer
refactor using object monitor
add Contidtion version
still using signalAll