запускаем твой код в 100 потоков. все потоки пролетят до лока показав что в списке например 50 строк, после по очереди у тебя отработает каждый поток норм пока в списке находятся строки, но потоки в ожидании, они уже проверку на пустоту списка прошли, и остальные 50 потоков просто с пустым...