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

 
 

多线程 NSThread 了解的更多相关文章

  1. iOS多线程 NSThread/GCD/NSOperationQueue

    无论是GCD,NSOperationQueue或是NSThread, 都没有线程安全 在需要同步的时候需要使用NSLock或者它的子类进行加锁同步 "] UTF8String], DISPA ...

  2. 多线程NSThread基本用法

        #import "ViewController.h" @interface ViewController () @end @implementation ViewContr ...

  3. [iOS]深入浅出 iOS 之多线程 NSThread

    OS 支持多个层次的多线程 编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.     下面简要说明这三种不同范式:  Thread 是这三种范式里面相对轻量级的,但也是使用起 ...

  4. 多线程 -- NSThread

    NSThread NSThread 一个NSThread对象就代表一条线程 创建线程的几种方式 alloc/init // 1.创建线程 NJThread *thread = [[NJThread a ...

  5. [iOS 多线程 & 网络 - 1.1] - 多线程NSThread

    A.NSThread的基本使用 1.创建和启动线程 一个NSThread对象就代表一条线程创建.启动线程NSThread *thread = [[NSThread alloc] initWithTar ...

  6. 多线程 NSThread GCD

    ios多线程实现种类 NSThread NSOperationQueue NSObject GCD *************** 1.NSThread //线程 第一种 NSThread *thre ...

  7. iOS多线程NSThread和GCD

    在iOS中啊  其实有多种方法实现多线程 这里只记录两个比较常用的  或者说我比较常用的 一个就是BSThread 另一个就是一听名字就比较霸气的妇孺皆知的GCD 先说一下NSThread吧 这个方式 ...

  8. iOS 多线程NSThread理解与场景示例

    NSThread是相对GCD和NSOperationQuene而言,比较轻量级的一种多线程处理方式. 但同时,它的弊端就是需要自己管理线程的生命周期,以及线程同步:而另外两种不需要自己管理. 常见方法 ...

  9. 九、使用多线程——NSThread,GCD和NSOperation

    概述 早上起床,你先打开洗衣机,然后用热水把泡面泡上,接着打开电脑开启一天的码农生活.其中“洗衣服”.“泡泡面”和“码代码”3个任务(线程)同时进行,这就是多线程.网上有许多关于多线程的经典解释,此处 ...

  10. IOS 多线程 NSThread

    一个正在运行的应用程序是一个进程,一个进程会默认开启一个主线程,但是在主线程中的操作是串行的,也就是当有多个任务同时需要完成的时候,是按照顺序一个个执行.因此,为了提高效率,会在进程中开启多个线程,每 ...

随机推荐

  1. final、finally、三个关键字的区别

    一 final 如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为final,可以 ...

  2. Android笔记之获取显示器宽高

    原先的Display.getWidth().Display.getHeight()已废弃 推荐的获取Display宽高的方法如下 DisplayMetrics metrics = new Displa ...

  3. virtualBox 不能开启一个新任务的错误

    2016.06.05 这两天想在virtualbox上安装CentOS7.0玩,遇到一个问题: 不能为虚拟电脑 CentOS7 打开一个新任务. The virtual machine 'CentOS ...

  4. Good Bye 2015 B. New Year and Old Property —— dfs 数学

    题目链接:http://codeforces.com/problemset/problem/611/B B. New Year and Old Property time limit per test ...

  5. BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ...

  6. codeforces B. Eugeny and Play List 解题报告

    题目链接:http://codeforces.com/problemset/problem/302/B 题目意思:给出两个整数n和m,接下来n行给出n首歌分别的奏唱时间和听的次数,紧跟着给出m个时刻, ...

  7. python berkeley 操作——尤其提示 需版本匹配

    python berkeley 操作 先到http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/dow ...

  8. 我的CSDN博客

    从csdn搬过来的: csdn地址:http://blog.csdn.net/WR_technology

  9. Mybatis一二级缓存的理解

        频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以 ...

  10. No result defined for action cn.crm.action.LinkManAction and result input

    这是struts2的一个拦截器报的错误,当你的form中的数据有问题,比如说<input type="text" name="receiverLoginID&quo ...