用GCD线程组与GCD信号量将异步线程转换为同步线程

有时候我们会碰到这样子的一种情形:

同时获取两个网络请求的数据,但是网络请求是异步的,我们需要获取到两个网络请求的数据之后才能够进行下一步的操作,这个时候,就是线程组与信号量的用武之地了.

线程组用以监听线程的执行情况,而信号量就是用来将异步线程转化为同步线程.

以下是打印的数据:

2015-02-25 18:34:23.208 YXMWeather[265:8748] 请求1数据

2015-02-25 18:34:23.209 YXMWeather[265:8790] 1信号量结束

2015-02-25 18:34:23.927 YXMWeather[265:8748] 请求2数据

2015-02-25 18:34:23.927 YXMWeather[265:8787] 2信号量结束

2015-02-25 18:34:23.928 YXMWeather[265:8748] 完成

时间: 2024-08-24 12:05:50

用GCD线程组与GCD信号量将异步线程转换为同步线程的相关文章

Java多线程 - 线程组

Java使用ThreadGroup来表示线程组,用以对一批线程进行分类管理. Java允许程序对线程组直接进行控制,对线程组的控制相当于同时控制这批线程: 用户创建的所有线程都属于指定线程组,如果程序没有显式指定线程属于哪个线程组,则该线程属于默认线程组: 默认情况下,子线程和创建它的父线程处于同一个线程组内: 一旦某个线程加入指定线程组后,该线程将一直属于该线程组,直到该线程死亡,线程不能中途改变它所属线程组. ThreadGroup内定义了一个比较有用的方法:void uncaughtExc

Jmeter 快速入门--初识线程组

添加线程组 (1)thread group(线程组),setup thread group相当于lr初始化"环境"的初始化脚本,teardown thread group相当于lr测试完毕后对应的清除信息的脚本. (2)名称:可以给线程组设置一个命名. 注释:可以对线程组添加备注以标记. 在取样器错误后要执行的动作:就是在错误之后要如何执行,可选继续执行后续的.停止执行等. (3)线程数:即用户数,一个虚拟用户占用一个进程或线程,需要多少用户并发,设置多少虚拟用户数在这里也就是设置多少

【Java基础】Java多线程之线程组和线程池

在上一篇文章中,讲述了线程的基本概念和用法,这里将继续讲述线程组和线程池的一些东西. 线程组:java.lang.ThreadGroup 1. 线程组的介绍 线程组表示一个线程的集合.此外,线程组也可以包含其他线程组.线程组构成一棵树,在树中,除了初始线程组外,每个线程组都有一个父线程组.允许线程访问有关自己的线程组的信息,但是不允许它访问有关其线程组的父线程组或其他任何线程组的信息.   2. 线程组的构造方法 ThreadGroup(String name) 构造一个新线程组. Thread

线程组

http://www.cnblogs.com/xrq730/p/4856072.html 线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织. 线程关联线程组:1级关联 所谓1级关联就是父对象中有子对象,但并不创建孙对象.这种情况在开发中很常见,比如创建一些线程时,为了有效对这些线程进行阻止管理,通常情况下是创建一个线程组,然

JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)

引入: 上篇文章中我们讨论了Agent利用环境指针访问VM的线程操作,这里讨论线程组操作. 分类3:线程组操作 a.GetTopThreadGroups.让Agent获取VM中的所有全局的线程组. jvmtiError GetTopThreadGroups(jvmtiEnv* env,             jint* group_count_ptr,             jthreadGroup** groups_ptr) 函数会返回全局的线程组的数量和线程组的列表. b.GetThre

Unix C++(boost) 线程同步和线程组

#include <boost/thread.hpp> #include <iostream> #include <vector> #include <cstdlib> #include <ctime> boost::mutex mutex; boost::condition_variable_any cond; std::vector<int> random_numbers; void fill() { std::srand(sta

java 多线程 25 :线程和线程组的异常处理

线程中出现异常 从上面代码可以看出来处理线程的异常 设置异常的两种方式 1.全局异常,也是静态异常,是个静态方法 , 类.setDefaultUncaughtExceptionHandler() 2.对象一样,针对单个线程设置的异常,对象.setUncaughtExceptionHandler() ps:如果手动在线程内try catch了  那么就不会进入以上两种自己设置的异常了 线程组异常 从上面代码可以看出来处理线程组的异常 继承ThreadGroup 重写 uncaughtExcepti

java 多线程 24 : 线程组

线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织. 线程关联线程组:1级关联 所谓1级关联就是父对象中有子对象,但并不创建孙对象.这种情况在开发中很常见,比如创建一些线程时,为了有效对这些线程进行阻止管理,通常情况下是创建一个线程组,然后再将部分线程归属到该组中,以此来对零散的线程对象进行有效的管理. 看一下简单的1级关联的

Java多线程16:线程组

线程组 可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示: 线程组的作用是:可以批量管理线程或线程组对象,有效地对线程或线程组对象进行组织. 线程关联线程组:1级关联 所谓1级关联就是父对象中有子对象,但并不创建孙对象.这种情况在开发中很常见,比如创建一些线程时,为了有效对这些线程进行阻止管理,通常情况下是创建一个线程组,然后再将部分线程归属到该组中,以此来对零散的线程对象进行有效的管理. 看一下简单的1级关联的