博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS多线程-NSThread简单语法
阅读量:7092 次
发布时间:2019-06-28

本文共 1342 字,大约阅读时间需要 4 分钟。

1> 开线程的3种方式先创建,后启动  

1 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; //object:run方法中传递的参数2 thread.name = @“线程名字”;3 thread.threadPriority = 1.0; //优先级4 [thread start];

直接启动(2种)

1 [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil]; 2 [self performSelectorInBackground:@selector(run) withObject:nil];

2> 其他方法

NSThread *current = [NSThread currentThread];//获得当前线程 + (NSThread *)mainThread; // 获得主线程

3>线程安全

        1 前提:多个线程访问同一块资源的时候
        2 解决方案:加互斥锁,加多把锁无效
        3 相关代码:

@synchronized(self){ //锁对象,全局唯一变量,一般写self加锁的代码 }

        4 缺点:消耗大量CPU资源

        5 原子和非原子属性,选中非原子属性(nonatomic)

4> NSThread线程间通信 

回到主线程刷新UI

//第一种方式   waitUntilDone:要不要等待调用方法执行完毕之后继续往下执行[self performSelectorOnMainThread:@selector(showImage:) withObject:image waitUntilDone:YES];//第二种方式  利用self.imageView(里面有image属性),直接调用image属性的set方法就可以刷新UI,显示图片,而上面要实现showImage:方法[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:YES];//第三种方式  [self.imageView performSelector:@selector(setImage:) onThread:[NSThread mainThread] withObject:image waitUntilDone:YES];

5>常用的控制线程状态的方法

线程的各种状态:新建-就绪-运行-阻塞-死亡

[NSThread exit];//退出当前线程[NSThread sleepForTimeInterval:2.0];//阻塞线程[NSThread sleepUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];//阻塞线程

注意:线程死了不能复生

 

转载于:https://www.cnblogs.com/liugengqun/p/5124643.html

你可能感兴趣的文章
RHEL7-Samba共享测试
查看>>
ubuntu下 php 笔记
查看>>
js传输txt文档内容
查看>>
ThreadLocal与线程池使用的问题
查看>>
Linux时间子系统(十二) periodic tick
查看>>
死锁原因及解决、避免办法
查看>>
TF-IDF与余弦相似性的应用
查看>>
HTML盒子尺寸的计算
查看>>
java开发常用技术
查看>>
SQLServer中对Xml字段的操作
查看>>
利用JavaScript来实现用动态检验密码强度
查看>>
Oracle 数据库高级查询--DISTINCT、IN 、BETWEEN、LIKE
查看>>
手势的状态判断,
查看>>
单例(LintCode)
查看>>
女孩子,不漂亮也没关系
查看>>
Srpingboot controller service模板实现
查看>>
Helllo World
查看>>
ZJOI2007报表统计·BZOJ1058
查看>>
页面加载时序问题----BUG分析
查看>>
[算法题] 汉诺塔问题
查看>>