一、什么是线程间的通信?
- 在一个线程中,线程往往不是独立存在的,多个线程间需要经常进行通信
- 举个比较常见的例子:在子线程下载图片,下载完毕之后到主线程显示图片。
- 具体体现:
- 一个线程将数据传递给另外一个线程。
- 在一个线程中完成了指定的任务之后,再转到另外一个线程中继续执行任务
- 线程的注意点:
- 不能够开启太多的线程(1~3条就行了,不要超过5条)
- 在主线程(UI线程)显示/刷新UI界面,处理UI控件的事件(点击、触摸、拖拽等
- 在子线程(后台/异步线程)执行耗时操作(所有的网络访问都是耗时操作)
-
常用的实现方案:
- GCD代码示范:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// 执行耗时的异步操作...
dispatch_async(dispatch_get_main_queue(), ^{
// 回到主线程,执行UI刷新操作
});
});