1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。
前面几篇文章讲了泛型、讲了数组,都有提到集合,这一节重点对集合进行详细解说。本文主要使用各种集合类型。以至于评估其性能,针对不同的场景选择不同的集合使用。...
常用的宏打印日志//DEBUG 模式下打印日志,当前行 #ifdef DEBUG #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); #else #d......
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
不处理路由键,只需要简单的将队列绑定到交换机上发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。 Fanout交换机转发消息是最快的。
上一个教程中,我们创建了一个work queue. 其中的每个task都会被精确的传送到一个worker. 这节,我们将会讲把一个message传送到多个consumers. 这种模式叫做publish/subscribe(发布/订阅)....
(3)inprogress是动画锁当第一个动画执行时,向Queue中添加锁inprogress,阻止异步调用动画,也就是要求同步执行动画,当动画结束时,移除锁,调用下一个动画。...
分区有序:根据key进行路由选择,相同的key会路由到相同MessageQueue
RLock:在同一个线程里面,可以连续多次调用acquire,一定要注意acquire和release的次数相等
我们都知道线程间的通信可以使用BlockingQueue,那么为什么BlockingQueue可以进行线程间的通信呢?其实就在于BlockingQueue的锁机制。重入锁ReentrantLock带有一个Condition的条件,可以进行线程等待和唤醒的功能,而Blockin...