Запись и чтение файлов из нескольких потоков
Запись и чтение файлов из нескольких потоков
Вопрос новичка - допустимо ли записывать и/или читать файлы в android из нескольких потоков?
Re: Запись и чтение файлов из нескольких потоков
конечно, главное не забывать "ставить замок", т.е. запрещать доступ к файлу, который уже открыт в другом потоке и выполнять синхронизацию. Все подробно есть тут: http://www.amazon.com/Java-Concurrency- ... 0321349601Norman писал(а):Вопрос новичка - допустимо ли записывать и/или читать файлы в android из нескольких потоков?
P.S. эта книга покрывает на много больше чем нужно для android, но прочитайте ее хоть 1 раз и жизнь будет легче, жить будет веселее

Re: Запись и чтение файлов из нескольких потоков
Т.е. чтение одного файла невозможно сразу несколькими потоками?
Немного разверну вопрос:
1) Есть объекта класса File, ссылающийся на папку ресурсов для приложения. Я могу использовать этот объект для создания других объектов класса "File" в нескольких потоках одновременно?
2) Является ли ошибкой ситуация, если из нескольких потоков одновременно будет происходить запись в разные файлы?
3) Является ли ошибкой ситуация, если один файл читается из нескольких потоков одновременно?
Немного разверну вопрос:
1) Есть объекта класса File, ссылающийся на папку ресурсов для приложения. Я могу использовать этот объект для создания других объектов класса "File" в нескольких потоках одновременно?
2) Является ли ошибкой ситуация, если из нескольких потоков одновременно будет происходить запись в разные файлы?
3) Является ли ошибкой ситуация, если один файл читается из нескольких потоков одновременно?
Re: Запись и чтение файлов из нескольких потоков
1) Можете, но зачем если все ресурсы доступны через класс R. Опятьже делать вы можете что угодно, но должны понимать, что порядок выполнения потоков не гаррантирован, и синхронизация потоков -это ваша проблема.Norman писал(а):Т.е. чтение одного файла невозможно сразу несколькими потоками?
Немного разверну вопрос:
1) Есть объекта класса File, ссылающийся на папку ресурсов для приложения. Я могу использовать этот объект для создания других объектов класса "File" в нескольких потоках одновременно?
2) Является ли ошибкой ситуация, если из нескольких потоков одновременно будет происходить запись в разные файлы?
3) Является ли ошибкой ситуация, если один файл читается из нескольких потоков одновременно?
2) Нет.
3) Нет, но опять таки порядок выполнения не гаррантирован, т.е. читать / записывать в файл потоки должны по очереди, классическая очередь.
Важно понимать что вы можете запустить поток и остановить, тоесть события - старт и стоп, либо завершено корректно либо с ошибкой - все. Остальное не гаррантирует никто и проконтролировать невозможно, более того поведение будет отличаться при каждом запуске, потому единственный варриант избежать непредвиденный ошибок - жесткий контроль порядка доступа к данным.
P.S. объяснить это в форуме проблематично... для работы с потоками не столько нужно что -то знать, сколько просто опыт. Каждый раз все по разному и вы просто должны понимать как они будут себя вести... Общая теория довольно объемная, но иначе никак, там очень много подводных камней. Попробуйте посмотреть короткую серию видео по работе с потоками https://www.youtube.com/watch?v=s032s29 ... -qJdf38oKp
