Простейшая таблица, при добавлении записей в 30+ потоков(заканчиваются они почти одновременно... но врядли в этом дело), в БД попадает в лучшем случае половина данных, остальное - пустые строки.
@andrwork а откуда данные берутся? они проверяются перед тем как заносить в БД?
Как вариант конечно отдельный поток который будет собирать данные с рабочих потоков (через те же списки) и заносить их в БД, предварительно производя валидацию)
@brotok вам лучше всего это составлять в конструкторе на условия функций. А там уже запись. В общем у вас буит 4 if -а только смотрите а если у вас совпадет все? При таком методе он 4 раза и запишет