iOS多线程基本使⽤教程(Swift)
iOS多线程基本使⽤
⼀、iOS的三种多线程技术
梦见自己老婆怀孕1、NSThread
–优点:NSThread ⽐其他两个轻量级,使⽤简单
–缺点:需要⾃⼰管理线程的⽣命周期、线程同步、加锁、睡眠以及唤醒等。线程同步对数据的加锁会有⼀定的系统开销2、NSOperation
祖国在我心中演讲稿600字六年级不需要关⼼线程管理,数据同步的事情,可以把精⼒放在⾃⼰需要执⾏的操作上
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")
}
输出如下:
优先级如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论