| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Работа с каталогами |
| Автор: gpepsi 14.8.2012, 16:05 |
| У меня 2 потока одновременно работают к файлами в каталоге. Один поток пишет, а второй должен ахривировать весь каталог (backup), копировать его в другое место и удалять. 1. Как можно заархивировать весь каталог с его содержимым. 2. Как синхронизировать работу 2 потоков. Если писатель пишет, то у него приоитет. Читатель должен ждать. Можно ли это сделать для двух различных процессов (как-то блокировать директорию) |
| Автор: LSD 14.8.2012, 17:05 |
| 1. http://java.sun.com/developer/technicalArticles/Programming/compression/ 2. Создай файл блокировки, как в http://docstore.mik.ua/orelly/java-ent/jnut/ch04_09.htm примере. |
| Автор: jk1 16.8.2012, 10:57 | ||
Есть пара граблей у этого способа, придется заботиться о его очистке при всех возможных исключениях. А если JVM упадет или её кто-то прибьет, то приложение может просто стать неработоспособным из-за существующего .lock-файла. Имхо лучше брать собственный лок в памяти и сопостовлять с его директорией. |
| Автор: AntonSaburov 16.8.2012, 11:06 |
| Для синхронизации двух потоков можно просто создать объект и использовать его в блоке synchronize. |
| Автор: mbasil 21.8.2012, 11:45 |
| Хоть и поздно пишу, но вопрос возник по поводу этого топика, "А не лучше ли использовать для этих целей java.util.concurrent.locks.ReentrantReadWriteLock"? Написал и понял - не лучше, так как читают и пишут по одному потоку. Вот если читателей много, то ReentrantReadWriteLock буде - само то. |