11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
|
|
1 | |
Объясните, как синхронизировать 2 потока18.11.2014, 12:31. Показов 587. Ответов 4
Метки нет (Все метки)
Привет.
главный поток создает 2 потока и передает им себя (this). по завершению загрузки потоки вызывают у главного какой-то метод. Мне соответственно нужно дождаться в этом методе обоих потоков (первый загрузил быстрее, подождал второго, пришел второй, сказал первому, что идем дальше выполнять метод) выполнили и опять пошли делать свою загрузку и т.д. Здесь прошу подсказать, какими java-примитивами можно это разрулить? Если можно, то с простеньким примером. Добавлено через 22 минуты Я поискал - нашел CountDownLatch, вроде подходит, только не пойму как мне ее сбрасить после первого прохода?
0
|
18.11.2014, 12:31 | |
Ответы с готовыми решениями:
4
Как синхронизировать два потока? Как синхронизировать между собой два потока ManualResetEvent: синхронизировать три потока Объясните подробно про работу с контролом из другого потока |
18.11.2014, 13:38 | 2 |
CoundDownLatch не допускает переиспользования. Или создавайте новый, или замените его на другой примитив синхронизации:
Phaser, CyclicBarrier. Они очень похожи.
1
|
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
|
|
18.11.2014, 17:13 [ТС] | 3 |
спасибо,
CyclicBarrier, вроде подходит. у меня 2 потока - для воспроизведения аудио и видео, от только может быть такая ситуация, что аудио поток загрузил 2 дорожки, а видео еще ни одной, если просто использовать await() - "защелка" откроется, а мне нужно было дождаться видео. как бы это разрулить?
0
|
18.11.2014, 17:29 | 4 |
Не понял, почему вы решили что она откроется? await() не откроется пока определенное число потоков не достигнет определенной точки. Число потоков у вас строго определено, такая ситуация не должна возникнуть.
0
|
11 / 11 / 2
Регистрация: 20.05.2011
Сообщений: 71
|
|
18.11.2014, 17:35 [ТС] | 5 |
да, все верно, это меня не туда понесло
спасибо
0
|
18.11.2014, 17:35 | |
18.11.2014, 17:35 | |
Помогаю со студенческими работами здесь
5
Объясните тупому почему задержка потока по Sleep() больше чем ... с вызывает задержки и других потоков? Как из потока управлять формой, если функции потока находятся в другом классе? VC++6.0, как из порожденного потока прочитать переменную главного потока? Как из одного потока узнать состояние другого потока Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |