Thanks for all the replies, I did not expect this many replies seems it is interesting topic
I am not using single-producer/single consumer since there are many threads that are adding into the vector but only one that is removing from vector. This belongs to the NETWORKING forum in fact so that is why I did not bring up the networking details yet. Why I have many producers is because host has one socket per player so one thread per player in fact. Client only have one socket since all its communication goes to server. Server broadcast to the other clients.
So in a 4 player game the HOST has 3 threads with one socket each picking up messages from that player, using streams (objectoutputstream, objectinputstream). I am not sure, some say I can just use one single socket for all communication and let all players send on it. Would it work like a queue so that no problem occur if 2 players send a message simultaneously I am not sure.
Why I chose vector was, at one time I was thinking the consumer should be able to search through the orderqueue for a specific instruction but so far I have not needed such functionality.