搜尋

首頁  >  問答  >  主體

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

我想到的

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

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

天蓬老师天蓬老师2803 天前1579

全部回覆(21)我來回復

  • 怪我咯

    怪我咯2017-04-17 16:17:12

    有人說了 NSOperation,我就不說了。
    但我比較喜歡 GCD。這個問題可以用 barrier 來解決:

        dispatch_queue_t queue = dispatch_queue_create("JOHNSHAW", DISPATCH_QUEUE_CONCURRENT);
        
        dispatch_async(queue, ^{
            NSLog(@"task 1");
            sleep(1);
        });
        dispatch_async(queue, ^{
            NSLog(@"task 2");
            sleep(1);
        });
        
        dispatch_barrier_async(queue, ^{
            NSLog(@"after task 1 and task 2");
            sleep(1);
        });
        
        dispatch_async(queue, ^{
            NSLog(@"do someting else");
        });
    

    其實我比較喜歡 RAC,不過 RAC 畢竟是個重型框架,用的公司不多

        RACSignal *task1 = ...;
        RACSignal *task2 = ...;
        
        [[RACSignal combineLatest:@[task1,task2]] subscribeNext:^(id x) {
            NSLog(@"after task1 and task2 ");
        }];

    回覆
    0
  • 阿神

    阿神2017-04-17 16:17:12

    用RxAndroid。一.zip方法就搞定了。 。

    回覆
    0
  • PHP中文网

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

    比較好的方式使用NSOperation 因為有addDependecy方法~

    回覆
    0
  • PHP中文网

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

    For javascript:

    1. https://github.com/caolan/async
      處理非同步的並行與序列都很方便

    2. 用jQuery的Promise, 或其它函式庫的Promise實作 :)

    回覆
    0
  • PHP中文网

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

    借鑒下map reduce方法,類似於歸併排序的思路

    回覆
    0
  • 迷茫

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

    正常使用 dispatch_group_wait 和 dispatch_group_notify 就好了。

    也可以使用 dispatch_barrier_sync / dispatch_barrier_async,將收到所有回應之後的操作用作 barrier block,那麼這個 block 就會等待所有網路請求結束之後再執行。

    回覆
    0
  • 黄舟

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

    不知道你問的Android還是iOS, 如果是Android用CountDownLatch來控制執行緒吧

    回覆
    0
  • PHPz

    PHPz2017-04-17 16:17:12

    java的話,用concurrent套件的future api可以實作多執行緒分別請求,然後全部回應後處理結果。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 16:17:12

    for iOS
    建立一個串列佇列處理。不影響外部並發請求。

    回覆
    0
  • 黄舟

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

    JS中如何實現?

    回覆
    0
  • 取消回覆