iOS项目经验-创建线程的三种方式
来源:互联网 发布:哪个软件播放rmvb 编辑:程序博客网 时间:2024/05/29 07:28
:
/**
1. 开发比较复杂的多线程程序时,可以现在主线程把功能实现
2. 实现功能以后,可以把耗时的功能再放到子线程
3. 再增加一个线程,建议开发的时候,线程一个一个增加
*/
/*
线程安全的概念: 就是在多个线程同时执行的时候,能够保证资源信息的准确性.
“UI线程” – 主线程
** UIKit 中绝对部分的类,都不是”线程安全“的
怎么解决这个线程不安全的问题?
苹果约定,所有程序的更新UI都在主线程进行, 也就不会出现多个线程同时改变一个资源。
// 在主线程更新UI,有什么好处?
1. 只在主线程更新UI,就不会出现多个线程同时改变 同一个UI控件
2. 主线程的优先级最高。也就意味UI的更新优先级高。 会让用户感觉很流畅
*/
加锁,互斥锁
加锁,锁定的代码尽量少。
加锁范围内的代码, 同一时间只允许一个线程执行
互斥锁的参数:任何继承 NSObject *对象都可以。
要保
// 耗时操作
- (void)run:(NSString *)str
{
for (int i = 0; i < 10; i++) {
NSLog(@”%@–%d”, [NSThread currentThread], i);
}
}
pragma mark - 线程的创建方式
// 创建线程方式3
- (void)test3
{
// “隐式”创建线程方式
[self performSelectorInBackground:@selector(run:) withObject:@”cz”];
}
// 创建线程方式2
- (void)test2
{
NSLog(@”—%@”, [NSThread currentThread]);
[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@”hello”];
NSLog(@"test2 --- %@", [NSThread currentThread]);
}
// 创建线程方式1
- (void)test1
{
// 实例化一个线程对像
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];
// 让线程开始工作,启动线程, 在新开的线程执行run方法[thread start];
}
- iOS项目经验-创建线程的三种方式
- iOS创建线程的三种方式
- iOS创建线程的三种方式
- iOS GCD三种创建线程的方式
- java创建线程的三种方式
- 创建线程的三种方式浅析
- java创建线程的三种方式
- 多线程-创建线程的三种方式
- 创建线程的三种方式
- 创建线程的三种方式
- NSThread创建线程的三种方式
- Java创建线程的三种方式
- Java线程创建的三种方式
- 创建线程对象的三种方式
- 创建线程的三种方式对比
- 【多线程】创建线程的三种方式
- Java创建线程的三种方式
- Java创建线程的三种方式
- UIAlertView
- 与正则相关的一切 (示例)JS Date 转换日期格式
- c++ 学习 one
- 小tips总结
- 把windows窗口置顶--Windows on Top
- iOS项目经验-创建线程的三种方式
- JDBC中Statement接口提供的execute、executeQuery和executeUpdate之间的区别(转)
- Linux下静态库和动态库的创建和使用
- 找数组中出现超过一半的数 JAVA
- iOS项目总结-GCD
- UIView常见方法总结(一)
- 小小吐槽
- new分配内存的详细解释
- Java核心技术第3章(8)