Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> многопоточность при работе с файлом, надо написать синхронизацию 
V
    Опции темы
dementiev
Дата 13.11.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.2.2008
Где: Минск

Репутация: нет
Всего: 1



когда валится exception при многопоточном чтении/записи в файл? Т.е. мне надо знать, какие действия одновременно можно делать, а какие нет. Например, 
-много чтений одновременно можно делать?
-много записей одновременно можно делать?
-запись и чтение одновременно можно делать?
-или ничего нельзя делать одновремено?

Ответы нужны для того, чтобы правильно написать синхронизацию для работы с файлом, в который постоянно идёт многопоточные чтение/запись.

Хочу решать проблему не на уровне nio.FileChanell, а на уровне синхронизации методов, которые пишут/читают.
PM MAIL   Вверх
goodday1941
Дата 13.11.2009, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

Репутация: 1
Всего: 9



вот нашел книженцию в этом направлении может чего вычитаете

Добавлено через 1 минуту и 11 секунд
Цитата(dementiev @  13.11.2009,  16:00 Найти цитируемый пост)
-много чтений одновременно можно делать?
-много записей одновременно можно делать?
-запись и чтение одновременно можно делать?
-или ничего нельзя делать одновремено?

думаю что все эти вещи зависят от операционной системы


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
ivanovpv
Дата 13.11.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 4
Всего: 28



Методы чтения/записи FileInputStream, FileOutputStream, FileReader/Writer все несинхронизированы. Соответственно для того, чтобы избежать рассогласованности их использования разными потоками - надо написать оберточный класс с синхронизацией их методов чтения и записи


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
dementiev
Дата 16.11.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.2.2008
Где: Минск

Репутация: нет
Всего: 1



отвечу на свой же вопросsmile
в общем случае всё зависит от
уровня изолированности транзакций. http://ru.wikipedia.org/wiki/%D0%A3%D1%80%...%86%D0%B8%D0%B9

Несмотря на то, что там написано про базы данных, вся информация верна для любого хранилища данных, к которому осуществляется конкурентный доступ.

Я решил проблему след-им образом. 
Код

javautil.concurrent.ReentrantLock lock = new ReentrantLock();

lock.readLock().lock();
//здесь читаю
lock.readLock().unlock()


lock.writeLock().lock();
//здесь пишу
lock.writeLock().unlock()



Это сообщение отредактировал(а) dementiev - 16.11.2009, 12:09
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0543 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.