Как правильно организовать работу в многопоточной программе?
Есть приложение, которое порождает некоторое количество потоков с помощью ExecutorService. Каждый поток - это одна задача, для идентификации у задачи есть id. В один момент времени не могут существовать две задачи (потока) с одним и тем же id.
Как изящно выйти из ситуации?
У меня на уме использовать Collections.synchronizedList(new ArrayList<>()) объект которого передавать в метод "задачи", а после того как задача выполнится в конце удалить из списка запись с соответствующим id.
Dmitry Roo, Генерация id происходит не в моем приложении. id с остальными данными приходит из вне. На каждый id создается поток/задача в которой происходит работа с файлами, поэтому в случае передачи мне одного и того же id может возникнуть ошибка т.к. файл уже занят другим потоком. Поэтому необходимо контролировать не передали ли мне по неведомой причине два одинаковых id.