Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата

2. Создай файл блокировки, как в этом примере.  


Есть пара граблей у этого способа, придется заботиться о его очистке при всех возможных исключениях. А если JVM упадет или её кто-то прибьет, то приложение может просто стать неработоспособным из-за существующего .lock-файла.

Имхо лучше брать собственный лок в памяти и сопостовлять с его директорией.

Автор: AntonSaburov 16.8.2012, 11:06
Для синхронизации двух потоков можно просто создать объект и использовать его в блоке synchronize.

Автор: mbasil 21.8.2012, 11:45
Хоть и поздно пишу, но вопрос возник по поводу этого топика,
"А не лучше ли использовать для этих целей java.util.concurrent.locks.ReentrantReadWriteLock"?

Написал и понял - не лучше, так как читают и пишут по одному потоку. 
Вот если читателей много, то ReentrantReadWriteLock буде - само то.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)