Only inform MessageReceiver of number of commands sent after sending all commands
Use a per sender thread to send commands
Fix comment grammar... :)
Use a Set (LinkedHashSet) rather than a List (ArrayList) to store the commands for each sender. This gives some implicit protection from exact duplicate commands being sent
Print warning when a duplicate command is ignored