[网络和多线程]3、NSThread的基本使用方法

本文介绍了NSThread的基本使用方法,包括创建和启动线程的过程,如何判断当前线程是否为主线程,以及通过不同方式创建线程的特点。同时,还探讨了线程的状态管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3、NSThread的基本使用方法
         【网络多线程】
--------------------------------------------------------------------------------------------------------------
 
 
创建和启动线程
一个NSThread对象就代表一条线程,添加的target就是添加的子线程任务,即创建线
程成功后自动调用threadMain方法

    // 1、创建一条线程

    NSThread *thread = [[NSThread alloc

initWithTarget:self selector:@selector(threadMain)  object:nil];

    

    // 2、启动线程

    [thread start];

       

       线程一启动就会执行self的threadMain方法



主线程相关用法(实例)

    + (NSThread *)mainThread;   // 获得主线程

    - (BOOL)isMainThread;       // 是否为主线程

    + (BOOL)isMainThread;       // 是否为主线程

 
[实例]

- (IBAction)btnClick {

    // 1、获得当前的线程,打印线程

    NSThread *curThread = [NSThread currentThread];

    NSLog(@"%@ --- runisMainThread == %d",curThread,[curThread isMainThread]);

    

    // 2、获取主线程,打印主线程

    NSThread *mainThread = [NSThread mainThread];

    NSLog(@"%@ --- mainThread%d",mainThread,[NSThread isMainThread]);


结果:从打印结果看,btnClick处于主线程,内存地址相同。




获得当前线程

    // 1.获得当前的线程

    NSThread *current = [NSThread currentThread];


    // 2、获取和设置当前线程的优先级:范围0 - 1,默认0.5.值越大,优先级越高

    + (double)threadPriority;

    + (BOOL)setThreadPriority:(double)p;


    // 3、线程的名称

    - (void)setName:(NSString *)name;

    - (NSString *)name;



其他线程创建的方式


    // 1、从主线程分离一条线程,创建线程后自动启动线程

    [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];

    

    // 2、隐式创建并启动线程

    [self performSelectorInBackground:@selector(run) withObject:nil];

    

       上述2种创建线程方式的优缺点

       优点:简单快捷

       缺点:无法对线程进行更详细的设置



线程的状态



    // 启动线程

    - (void)start;

    // 进入就绪状态 -> 运行状态。当线程任务执行完毕,自动进入死亡状态


    // 阻塞(暂停)线程

    + (void)sleepUntilDate:(NSDate *)date;

    + (void)sleepForTimeInterval:(NSTimeInterval)ti;

    // 进入阻塞状态


    // 强制停止线程

    + (void)exit;

    // 进入死亡状态


注意:一旦线程停止(死亡)了,就不能再次开启,否则程序崩溃。



--------------------------------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值