//
// ViewController.swift
// 多线程
//
// Created by admin on 16/2/17.
// Copyright © 2016年 jin. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.threadStatus()
}
// 线程状态
func threadStatus()
{
// 线程的状态有:就绪,运行,死亡,阻塞
let thread = NSThread(target: self, selector: Selector("threadStatusRun:"), object: nil)
// 放到可调度的线程池,等到被调度,就绪状态
thread.start()
}
// 线程状态测试方法
func threadStatusRun(parameter:AnyObject? = nil)
{
// 进入阻塞状态
// 阻塞指定的时间
//NSThread.sleepForTimeInterval(5)
// 阻塞到指定的日期
//NSThread.sleepUntilDate(NSDate(timeIntervalSinceNow: 5))
// 退出,进入死亡状态
NSThread.exit()
print(parameter)
for(var i = 1;i < 10000;i++)
{
// 打印当前线程 <NSThread: 0x7fd6ab50f480>{number = 2, name = (null)}
print(NSThread.currentThread())
}
}
// 线程属性
func threadAttr()
{
let thread = NSThread(target: self, selector: Selector("run:"), object: "jin")
// 优先级,一般不需要设置
thread.threadPriority = 0.1
// 名字
thread.name = "jin"
thread.start()
}
// 创建子进程的方式A和b比较方便(隐式创建),但是不能设置线程的详细的属性
func createThreadA()
{
NSThread.detachNewThreadSelector(Selector("run:"), toTarget: self, withObject: nil)
}
func createThreadB()
{
self.performSelectorInBackground(Selector("run:"), withObject: nil)
}
// 可以设置线程的属性
func createThreadC()
{
let thread = NSThread(target: self, selector: Selector("run:"), object: nil)
thread.start()
}
// 测试方法
func run(parameter:AnyObject? = nil)
{
print(parameter)
for(var i = 1;i < 10000;i++)
{
// 打印当前线程 <NSThread: 0x7fd6ab50f480>{number = 2, name = (null)}
print(NSThread.currentThread())
}
}
}