мне нужно вызвать некоторые службы и знать, когда они закончили, так что я могу отправить уведомление:Внешнее обслуживание запускает асинхронную задачу и сразу же возвращается. Как узнать, когда задачи действительно закончены?
...
someService.doStuff();
otherService.doStuff();
//all services finished
sendOutNotification();
Проблема заключается в том, что некоторые из этих услуг стреляя свою работу асинхронно и возвращения из DoStuff() немедленно, не дожидаясь завершения этой работы. Поскольку мой текущий поток просто вызывает эти методы службы, вместо того, чтобы владеть любыми фактическими исполнителями потоков, которые эти службы создают и запускают, кажется, что нет способа узнать, когда потоки, запущенные командой doStuff(), закончены.
Есть ли способ обойти это? Или есть проблема с дизайном, связанная с асинхронными исполнениями без ожидания на любом уровне (кроме верхнего)?
это асинхронный режим, поэтому вам понадобится функция callbank, которую могут выполнять задания при их завершении. или перейдите в цикл опроса и задайте флажок, когда они будут выполнены. –
API должен предоставить способ оповестить о завершении действия. – ZhongYu