Okay, I was looking for an answer to this question, posted earlier:
"(Are there) Two or more different instances (of the AbstractDataProcesser) or two or more Threads running the same instance of the class?"
The answer to that question seems to be in the createDataProcessers() method which you don't show.
So: Is there just one instance of the AbstractDataProcesser created, and inserted into the array of processers which gets run, or do you create one instance of AbstractDataProcesser, put it into the array twice, and then run both instances?
If there are multiple instances, then
you should have to worry about synchronizing processing inside AbstractDataProcessor, and the error probably lies in the dataLoader, and the sharing of values between different threads inside that class (paused state, etc...). If there is one instance of the AbstractDataProcesser then we have to look at the data inside AbstractDataProcesser, since it is NOT thread safe, as well as the synchronization of methods. What is happening inside dataLoader is important too - but the narrowest focus first, we would need to make sure ADP is thread safe first, then expand out to the dataLoader.