iOS中多线程的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章给大家分享的是有关iOS中多线程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、iOS的三种多线程技术1、NSThread-优点:NSThread 比其
千家信息网最后更新 2026年11月03日iOS中多线程的示例分析
这篇文章给大家分享的是有关iOS中多线程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、iOS的三种多线程技术
1、NSThread
-优点:NSThread 比其他两个轻量级,使用简单
-缺点:需要自己管理线程的生命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有一定的系统开销
2、NSOperation
不需要关心线程管理,数据同步的事情,可以把精力放在自己需要执行的操作上
3、GCD
基于C语言的
二、基本使用
NSThread的基本使用
方式一:
// block let thread = Thread.init { print("1、----this is thread \(Thread.current) ") } thread.start()方式二:
// SEL let thread2 = Thread.init(target: self, selector: #selector(text), object: nil) thread2.start()
@objc func text(){ print("2、----this is thread \(Thread.current) ") }方式三:\
self.performSelector(inBackground: #selector(text2), with: nil)
输出
tips:可以给任意一个线程增加延迟看看
print(thread.isCancelled)//是否取消 print(thread.isExecuting)//是否在执行 print(thread.isFinished)//是否完成 print(thread.isMainThread)//是否是主线程
NSOperation的基本使用
方式一:
let queue = OperationQueue.init()// 最大线程数 queue.maxConcurrentOperationCount = 2 queue.addOperation { sleep(1) print("1111") } queue.addOperation { print("2222") }输出结果如下:
方式二:可设置优先级
let queue = OperationQueue.init() let op = BlockOperation.init { print("op") } op.queuePriority = .normal //设置优先级 queue.addOperation(op) let op2 = BlockOperation.init { print("op2") } op2.queuePriority = .normal queue.addOperation(op2) queue.addOperation { print("op3") }略作修改
let queue = OperationQueue.init() let op = BlockOperation.init { sleep(1) print("op") } op.queuePriority = .normal //设置优先级 queue.addOperation(op) let op2 = BlockOperation.init { sleep(1) print("op2") } op2.queuePriority = .veryHigh queue.addOperation(op2) queue.addOperation { print("op3") }输出如下:
优先级如下:
GCD的基本使用
方式一:queue.async 异步
let queue = DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent) for i in 0...15 { queue.async { sleep(1) print("this is \(Thread.current) \(i)") } }方式二:queue.sync 同步
let queue = DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent) for i in 0...15 { queue.sync { sleep(1) print("this is \(Thread.current) \(i)") } }附加网络上一段代码
for i in 1...10 { DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async { NSLog("DispatchQoS.QoSClass.default, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async { NSLog("DispatchQoS.QoSClass.background, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.unspecified).async { NSLog("DispatchQoS.QoSClass.unspecified, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async { NSLog("DispatchQoS.QoSClass.userInitiated, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async { NSLog("DispatchQoS.QoSClass.userInteractive, %d", i) } DispatchQueue.global(qos: DispatchQoS.QoSClass.utility).async { NSLog("DispatchQoS.QoSClass.utility, %d", i) } }优先级userInteractive最高、background最低
感谢各位的阅读!关于"iOS中多线程的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
线程
方式
优先级
同步
输出
示例
分析
内容
数据
更多
篇文章
管理
不错
实用
最低
最大
最高
两个
事情
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
蓝思科技飞鸽互联网
互联网与科技发展
港股互联网科技股
金融科技创新监管互联网金融
贷财互联网科技
科技互联网公司logo
友谊互联网络科技
大白互联网科技
中正互联网科技招聘
济南和联互联网科技有限公司
重庆威客帮互联网科技
互联网科技革命什么开始
知域互联网科技有限公司大骗子
互联网第三次科技革命特征
互联网领先科技宣传片
江苏互联网智能科技软件
风投北京互联网科技
珠海东科互联网科技有限公司
湖北辰鑫科技互联网
广州三三互联网科技有限公司
北京路客互联网科技有限公司
涨乐互联网科技
深圳互联网科技公司
广州慧亚互联网科技怎么样
银川新华互联网科技职业技术培训学校图片
上海宁丞科技互联网
互联网与医疗科技
互联网新科技动漫ppt素材
深圳互联网科技园地址
如何强化互联网金融科技