|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Вызывается асинхронный, рекурсивный метод Как можно дождаться его завершения, а потом завершить, сам метод , который его вызывает Без Rx и Compleatble Feature Пробую Concurrent Lock , Thread joinПока не выходит ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 23:34 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-, Ну как обычно,событийно например callbackom Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2018, 23:44 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6.
Просто проходит дальше и все ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 05:32 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
А как в случае CompletableFuture мне дождаться callBack? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 05:58 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
То есть по сути как обернуть Код: java 1. 2. 3. 4. 5. 6. 7.
В CompletableFuture ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 06:35 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-, Асинхронно пишут чтобы Не дожидаться и не ждать. Опиши постановку грамотнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 07:34 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-А как в случае CompletableFuture мне дождаться callBack? Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Надо изучать класс CompletableFuture Возможно он имеет нужное событие. А не найдете событие,то в принципе зачем Вам он ..Обычным java способом,что уже файлы никто не читает..надо какие то обертки включать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 08:10 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Petro123-=Koba=-, Асинхронно пишут чтобы Не дожидаться и не ждать. Опиши постановку грамотнее. Есть небольшое тестовое задание Kotlin Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Пишу тест на Java Код: java 1. 2. 3. 4. 5. 6. 7. 8.
В итоге у меня выводятся два лога и валится по ассерту Собственно вопрос как в случае теста, сделать последовательное выполнение методов ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 09:04 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-, Обычно асинхронные методы возвращают Future<X>. Чтобы дождаться выполнения асинхронной таски - в этом интерфейсе есть методы get(...) Как с таймаутами разными, так и "навечно блокирующийся". https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html#get-- авторpublic T get() throws InterruptedException, ExecutionException Waits if necessary for this future to complete, and then returns its result. Так что вызывайте на объекте, который вам вернулся из asyncFileSystem.createFile (там, как я понимаю, как раз Future<...>) метод get(), а после этого - вызывайте ваш колбек и т.п. Но постановка задачи странная - зачем вам блокировать основной поток выполнения? В принципе, вы могли бы воспользоваться методом thenRun https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html#thenRun-java.lang.Runnable- авторpublic CompletableFuture<Void> thenRun(Runnable action) Description copied from interface: CompletionStage Returns a new CompletionStage that, when this stage completes normally, executes the given action. See the CompletionStage documentation for rules covering exceptional completion. и вызывать ваш callback в этом Runnable action. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 11:02 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код: java 1. 2. 3. 4.
Сейчас дела обстоят так ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 14:00 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Грубо говоря, мне надо асинхронный код вызвать синхронно... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 14:17 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-Грубо говоря, мне надо асинхронный код вызвать синхронно... Ты хочешь протестировать, что метод работает правильно, так? Не то что он работает асинхронно или синхронно, а правильно. Ну так выдели этот метод в отдельный класс, где он выполняется синхронно и тестируй этот класс. А потом используй его в асинхронном коде. Нет, ну можно конечно поиграться с Future или банальным wait/notify но просто чтоб не получилось так, что ты встраиваешь в класс некий функционал в виде коллбэков, future и т.д. только потому что его тестировать надо, а так они там нафиг не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 17:41 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
P. S. а если ты хочешь протестировать, что метод не просто правильно работает, но еще и thread safe, ну так напиши мультипоточный тест - но только логику выполнения/ожидания потоков реализуй прямо в нем, а не в исходном классе. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 17:42 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Да спасбо нашел тут https://stackoverflow.com/questions/2180419/wrapping-an-asynchronous-computation-into-a-synchronous-blocking-computation/35989208#35989208 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 22:08 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
С RxJava нашел как длеать А как как преобразовывать async методеы в CompletableFuture нет =( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 22:18 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
-=Koba=-Вызывается асинхронный, рекурсивный метод Как можно дождаться его завершения, а потом завершить, сам метод , который его вызывает Без ... Compleatble Feature Пробую Concurrent Lock , Thread joinПока не выходит я так думаю, хотят проверить на использование join(). Вот первая попавшаяся ссылка - https://www.avajava.com/tutorials/lessons/how-do-i-use-threads-join-method.html ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2018, 23:02 |
|
Асинхронный метод
|
|||
---|---|---|---|
#18+
С этим я уже разобрался теперь мне надо Асинхронный метод обернуть в CompleatbleFeature Код: java 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2018, 11:12 |
|
|
start [/forum/topic.php?fid=59&fpage=41&tid=2121849]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 153ms |
0 / 0 |