NSThread使用以及基本属性

//
//  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())
        }
    }
}

标签: swift, iOS多线程, NSThread

添加新评论