Java: синхронизация доступа к многопоточному связанному списку - PullRequest
3 голосов
/ 07 ноября 2011

Моя методология может быть неправильной (или реализована лучше). Если да, пожалуйста, дайте мне знать о лучшей идее.

Я пытаюсь реализовать программу чтения файлов фигур, которая работает с локальными файлами или по сети. Однако некоторые шейп-файлы ОГРОМНЫ, и для полной загрузки может потребоваться некоторое время. Я хотел бы разделить класс загрузки в свой собственный поток. Я также хотел бы, чтобы основной поток извлекал загруженные данные из загрузчика, пока он еще загружается, чтобы он мог отображаться немедленно.

Для этого я решил сохранить в загрузчике связанный список, содержащий элементы, которые уже были полностью загружены. Основной поток может опрашивать загрузчик, чтобы узнать, были ли загружены какие-либо элементы, и извлечь заголовок связанного списка, который удалит его из загрузчика.

Какие механизмы можно использовать, чтобы основной класс и класс загрузчика не пытались одновременно получить доступ к заголовку связанного списка? Я знаю, что это связано с синхронизацией, но я полный нуб с потоками Java. Просто нужно, чтобы кто-то указал мне правильное направление.

Если у тебя вообще другая идея, я весь в ушах. Спасибо

1 Ответ

2 голосов
/ 07 ноября 2011

не похоже ли это на проблему производителя-потребителя? Самый простой способ будет использовать BlockingQueue

Например: используйте концепцию, показанную здесь .. http://www.java2s.com/Code/Java/JDK-6/ProducerandconsumerbasedonBlockingQueue.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...