Your question seems (to me) to a little bit cryptic...
Regarding your first question, getting a ConcurrentModificationException
in a single threaded environment, all you need to do would be something like so:
List<String> list =...;
for (String str : list)
{
list.remove(str); //this should yield the exception
}
As to your second question, that code you have posted (the one with 2 threads) will most likely be prone to such an Exception. So far it is working due the amount of items you have and also the time out value. Should you change these, you will most likely experience this exception.
To avoid this, you could use synchronized blocks. By allowing each thread a synchronized section through which it can do it's collection modifications you should be able to steer clear from concurrent modification exceptions.
You could also regulate access to the list through the use of a Semaphore.