zoukankan      html  css  js  c++  java
  • iOS多线程开发小demo2,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在开发中也不常用,了解即可

  • 相关阅读:
    网络与系统安全第四次作业
    2018-2019-1 20189203《linux内核原理与分析》第六周作业
    《网络攻防实践》第五周作业
    《网络攻防实践》第四周作业
    《网络攻防实践》第三周作业
    《网络攻防实践》第二周作业
    《网络攻防实践》第一周作业
    《Linux内核原理与分析》第九周作业
    《Linux内核原理与分析》第八周作业
    《Linux内核原理与分析》第七周作业
  • 原文地址:https://www.cnblogs.com/dyf520/p/3805304.html
Copyright © 2011-2022 走看看