多线程 NSThread 了解
阅读原文时间:2023年07月13日阅读:1

用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)

//{

//&nbsp;&nbsp;&nbsp; // 1.获取当前的线程

//&nbsp;&nbsp;&nbsp; NSThread *cThread = [NSThread currentThread];

//

//&nbsp;&nbsp;&nbsp; // 2.打印线程

//&nbsp;&nbsp;&nbsp; NSLog(@"%@", cThread);

//

//&nbsp;&nbsp;&nbsp; // 3.h耗时操作

//&nbsp;&nbsp;&nbsp; for (int i = 0; i < 9999; i++) {

//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NSLog(@"%@", cThread);

//&nbsp;&nbsp;&nbsp; }

//

//&nbsp;&nbsp;&nbsp; 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

{

//&nbsp;&nbsp;&nbsp; [NSThread threadPriority];

//

//&nbsp;&nbsp;&nbsp; [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"``];

}

/**

*&nbsp; NSThread创建方式3:隐世线程创建,并且直接(自动)启动

*/

- (``void``)threadCreate3

{

[``self performSelectorInBackground:``@selector``(run:) withObject:@``"333333"``];

}

/**

*&nbsp; 创建方式2:创建完线程后自动启动

*/

- (``void``)threadCreate2

{

// 分离出的子线程

[``NSThread detachNewThreadSelector:``@selector``(run:) toTarget:``self withObject:@``"2222222"``];

}

/**

*&nbsp; 创建方式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在开发中也不常用,了解即可

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章