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在开发中也不常用,了解即可

  • 相关阅读:
    Android Stuido 更新问题
    ListView 获取精确滚动值
    获取ActionBar高度
    AnyncTaskLoader写法
    ScrollView 里面捕获OnTouchMove事件
    ImageLoader displayers 之CircleBitmapDisplayer
    DownloadManager 下载Apk 打开时 解析应用包是出错
    GSON 使用记录
    Android studio 不能升级问题
    一个社交App是如何构建高伸缩性的交互式系统
  • 原文地址:https://www.cnblogs.com/dyf520/p/3805304.html
Copyright © 2011-2022 走看看