多线程 NSThread 了解

用NSThread创建子线程的3种方法
 
//  DYFViewController.m
//  623-02-pthread
//
//  Created by dyf on 14-6-23.
//  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
//
 
#import "DYFViewController.h"
#import <pthread.h>
 
@interface DYFViewController ()
 
@end
 
@implementation DYFViewController
 
//// c语言函数
//void *run(void *data)
//{
//    // 1.获取当前的线程
//    NSThread *cThread = [NSThread currentThread];
//   
//    // 2.打印线程
//    NSLog(@"%@", cThread);
//   
//    // 3.h耗时操作
//    for (int i = 0; i < 9999; i++) {
//        NSLog(@"%@", cThread);
//    }
//
//    return NULL;
//}
 
- (IBAction)btnOnClick {
    // 1.获取当前的线程
    NSThread *cthread = [NSThread currentThread];
     
    NSThread *mt = [NSThread mainThread];
    // 2.打印线程
    NSLog(@"%@", cthread);
     
    NSLog(@"%@", mt);
     
    // 3.执行一线耗时的操作 : 创建一套子线程
    [self threadCreate3];
   
}
- (void)run:(NSString *)parma
{
//    [NSThread threadPriority];
//   
//    [NSThread setThreadPriority:0.55];
    // 取值0-1,默认0.5
    for (int i = 0; i < 9999; i++) {
        NSLog(@"%@---------%@", [NSThread currentThread], parma);
    }
}
 
- (void)threadCreate5
{
    // 分离出的子线程
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
}
- (void)threadCreate4
{
    // 分离出的子线程
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
}
 
/**
 *  NSThread创建方式3:隐世线程创建,并且直接(自动)启动
 */
- (void)threadCreate3
{
    [self performSelectorInBackground:@selector(run:) withObject:@"333333"];
}
 
/**
 *  创建方式2:创建完线程后自动启动
 */
- (void)threadCreate2
{
    // 分离出的子线程
    [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
}
 
/**
 *  创建方式1:①先创建初始化子线程②再启动
 */
- (void)threadCreate
{
    NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
    thread1.name = @"thread1";
    // 开启线程
    [thread1 start];
     
    NSThread *thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
    thread2.name = @"thread2";
    // 开启线程
    [thread2 start];
     
    NSThread *thread3 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
    thread3.name = @"33";
    // 开启线程
    [thread3 start];
}
 
@end

 利用NSThread在开发中也不常用,了解即可

 
 
原文地址:https://www.cnblogs.com/Cheetah-yang/p/4664138.html