3、多线程基础
NSThread的基本使用
如何使用NSThread创建新线程
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231016968-1619306948.png)
创建线程之后是默认不执行的状态
创建三个线程:
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231204999-2046112376.png)
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231247359-1948315395.png)
通过name属性区别这些线程
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231258468-1906481977.png)
接下来就是通过设置线程的优先级来设置线程的被使用频率的高低 不设置默认是0.5
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231324281-243871746.png)
第二种使用NSThread创建线程,分离出一条线程
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231421890-1683228229.png)
没有返回值,就没有办法拿到这个线程对象,就没办法设置相关的属性
第三种方法:开启一条后台线程
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231451202-253511978.png)
优点:不需要手动开启,就是start
总结一下:
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231516640-8087949.png)
自定义线程:
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231529359-1756615019.png)
重写dealloc方法,然后在dealloc方法中写打印方法,可以用来验证:当任务执行完毕之后,线程对象会被销毁。
如果要想让线程不销毁,只要有个strong指针指向它,但是即使它没有被销毁,任务执行完毕之后已经无法再执行新的任务了。
![](https://images2015.cnblogs.com/blog/784420/201512/784420-20151221231548077-1042985405.png)
会报错奔溃,尝试重新启动这个线程