찾다

 >  Q&A  >  본문

java - 发送10个网络请求,然后再接收到所有回应之后执行后续操作,如何实现?

我想到的

for iOS
1.用dispatch_group实现
2.用RunLoop实现   

还有没有其他的比较好的实现方式,求关于并发编程的文章.

天蓬老师天蓬老师2807일 전1624

모든 응답(21)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:17:12

    그럼 네트워크 요청은 모두 비동기인데, 같은 방식으로 처리되나요?

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 16:17:12

    블록 또는 클로저를 만듭니다. 네트워크 요청을 보내고 CompletionHandler에서 자신을 호출하여 다음 요청을 보냅니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-17 16:17:12

    안드로이드는 당연히 RxJava입니다. iOS RxSwift?

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 16:17:12

    dispatch_group_t 그룹 = dispatch_group_create();
    dispatch_group_enter(group);
    [요청1 완료됨:^(BOOL 성공, ID 응답){

    으아아아

    }];

    dispatch_group_enter(그룹);
    [요청2 완료:^(BOOL 성공, ID 응답){

    으아아아

    }];

    dispatch_group_enter(그룹);
    [요청3 완료:^(BOOL 성공, ID 응답){

    으아아아

    }];

    dispatch_group_enter(그룹);
    [요청4 완료:^(BOOL 성공, ID 응답){

    으아아아

    }];
    .
    .
    .
    .

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

    으아아아

    });

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 16:17:12

    항상 c/C 코드에 있을 수 있기 때문에 GCD를 사용하는 것이 더 좋다고 생각합니다

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:17:12

    AFNetworking를 사용하시는 분들은 AFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:

    을 사용하시면 됩니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:17:12

    GCD 그룹 이용하기

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-17 16:17:12

    Android에서는 RxJava를 사용하여 쉽게 구현할 수 있습니다.
    물론 스레드 동기화 보조 클래스인 CountDownLatch를 사용해 볼 수도 있습니다. CountDownLatch 사용에 대해서는 다음 블로그를 참조하세요.
    http://www.liuling123.com/2013/08/countdownlatch-demo.html

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 16:17:12

    마스터님들의 답변을 보고 깜짝 놀랐습니다. 이런 문제에 직면했을 때 저는 종종 리소스 변수를 설정하고 리소스를 10으로 초기화하고 스레드를 실행하여 리소스 수를 모니터링합니다. 그런 다음 동시 작업을 시작합니다. 리소스가 완료될 때마다 리소스가 1씩 감소하고 리소스가 0에 도달하면 수신 스레드가 중지되고 후속 작업이 완료됩니다.

    이건 어리석은 생각입니다. 특정 언어를 잘 모르는 경우에 사용하겠습니다. 결국 대부분의 언어는 이런 식으로 구현될 수 있습니다.

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:17:12

    Java 자체의 동시성 프레임워크가 언급한 문제 해결을 지원합니다. Future

    회신하다
    0
  • 취소회신하다