多线程 总结一
2015-07-29 08:18
288 查看
一、NSThread
1、创建和启动3种方式
1>先创建,后启动
//创建
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:@"http://XXX"];
//启动
[thread start];
2>创建完全自动启动
[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"http://XXX"];
3>隐式创建(自动启动)
[self performSelectorInBackground:@selector(download:) withObject:@"http://XXX"];
2.常用方法
1>获取当前线程
+ (NSThread *)currentThread;
2>获取主线程
+ (NSThread *)mainThread;
3>睡眠(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
4> 设置线程的名字
- (void)setName:(NSString *)n;
- (NSString *)name;
二、线程同步
1、为防止多个线程抢夺同一资源的数据安全问题
2、实现:为代码加一互斥锁(同步锁)
@synchronized(self) {
//被锁代码
}
1、创建和启动3种方式
1>先创建,后启动
//创建
NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:@"http://XXX"];
//启动
[thread start];
2>创建完全自动启动
[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:@"http://XXX"];
3>隐式创建(自动启动)
[self performSelectorInBackground:@selector(download:) withObject:@"http://XXX"];
2.常用方法
1>获取当前线程
+ (NSThread *)currentThread;
2>获取主线程
+ (NSThread *)mainThread;
3>睡眠(暂停)线程
+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
4> 设置线程的名字
- (void)setName:(NSString *)n;
- (NSString *)name;
二、线程同步
1、为防止多个线程抢夺同一资源的数据安全问题
2、实现:为代码加一互斥锁(同步锁)
@synchronized(self) {
//被锁代码
}
相关文章推荐
- poj 3026 Borg Maze (BFS + Prim)
- 脚本学习之路--if_$
- 邮票分你一半
- 多线程(三)-- 线程安全问题
- 多校3 1004 Painter
- 蓝屏修复工具和蓝屏代码查询软件
- 定义一个宏,不用if switch > < 等任何判断语句 比较a和b的大小
- Tab选项卡界面(1)
- Android jar包Proguard混淆方法
- Scade——学习笔记
- The Suspects(POJ_1611)
- sap模板
- refresh的停车场 SDUT
- Maven学习阶段性总结
- 指针与数组 连载2
- 安卓从字符串中删除指定的子串
- Ocaml学习笔记
- 大话——完成入门Android
- 老叶倡议:MySQL压力测试基准值
- 畅通工程(HDUOJ_1232)