Блокировка доступа к ресурсу по потокам - PullRequest
0 голосов
/ 08 марта 2011

У меня есть приложение, в котором записываются аудиофайлы. Пользователь может указать длину записанного аудио, количество сэмплов и время между записями. Например:

length   = 3 sec
samples  = 2
interval = 5 sec

Когда приложение запускается, оно создает поток, ждет 5 секунд и создает второй поток.

Первый поток записывает 3-секундную выборку в указанный каталог.

Через 2 секунды следующий поток начинает запись второго семпла. Он работает и создает два файла: sample1.3gp, sample2.3gp.

Но когда пользователь указывает:

length   = 3 sec
samples  = 2
interval = 1 sec

запись не может быть выполнена из-за того, что 2-й поток пытается получить доступ к медиа-рекордеру, когда 1-й поток все еще использует его.

Я хочу установить блокировку для этого ресурса. Что я имею в виду?

Когда 1-й поток начинает запись в течение 3 секунд, через 1 секунду 2-й поток пытается записать тоже.

Но он должен ждать следующие две секунды, пока 1-й поток не завершит свою работу.

Как лучше всего решить эту проблему?

1 Ответ

0 голосов
/ 08 марта 2011

Я предлагаю вам ознакомиться с многопоточностью и мьютексом в целом. Сначала прочтите этот ТАК вопрос и, возможно, уточните то, что вы спрашиваете.

Это на самом деле проблема не для Android, а для многопоточности с Java в целом.

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