Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java: Общие вопросы > совет по многопоточности и синхронизации |
Автор: LeMoH 9.1.2011, 23:28 | ||||
Доброго времени суток. Есть класс (LogParser) который реализует парсинг больших текстовых файлов ~100мб, он выполнен в виде отдельного потока, и есть класс (DataBaseConnector) который добавляет разпарсеные записи в бд В случае когда набирается достаточное количество записей в листе structures, я создаю новый поток в лице DataBaseConnector-а, передаю ему этот лист, и декрементирую переменную DBThreads, которую я считаю счётчиком "свободных" потоков LogParser
в основном потоке DataBaseConnector-а как видно я вызываю метод который добавляет записи в бд и инкрементирует счётчик "свободных" потоков DataBaseConnector
Собственно вопрос вот в чём, при попытке использовать wait() без параметра, и вызывать в DataBaseConnector-е в synchronized блоке LogParser.DBThreads.notify() вываливались ексепшены "java.lang.IllegalMonitorStateException", у меня такое чувство что я чего то непонимаю, поэтому был бы благодарен за объяснение происходящего. P.S. ну и впринципе хотелось бы услышать мнение о таком подходе, возможно какие то замечания или советы |
Автор: shorewall 10.1.2011, 12:00 | ||
DBThreads - экземпляр класса-оболочки над примитивным типом short.
|