import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//创建一个线程
let thread:Thread = Thread(target: self,selector: #selector(ViewController.doSomething),object: "param")
//为线程命名
thread.name = "childThread"
//thread.start()
//线程延迟3秒执行
self.perform(#selector(ViewController.doSomething),with: "param",afterDelay: 3)
let thread2:Thread = Thread(target: self,selector:#selector(ViewController.doSomething2),object:"param")
thread2.name = "childThread2"
thread2.start()
print("aa")
}
func doSomething(){
//线程加锁
let lock:NSLock = NSLock()
lock.lock()
print("在子线程中执行")
//回到主线程中
self.performSelector(onMainThread: #selector(ViewController.makeSomething), with: "param", waitUntilDone: false)
//线程解锁
lock.unlock()
}
func doSomething2(){
let lock:NSLock = NSLock()
lock.lock()
print("在另一个子线程中执行")
lock.unlock()
}
func makeSomething(){
print("主线程刷新UI")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
总结:NSThread是最传统的线程管理方式,解决了线程因同步执行造成阻塞从而影响应用卡顿等效果,不过NSThread也存在各种弊端,例如需要我们手动管理解锁线程,操作起来比较繁琐,随着NSOperation和GCD的出现,NSThread逐渐被废弃