#import "ViewController.h"

//导入头文件

#import <pthread.h>

@interfaceViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[superviewDidLoad];

[selfbtnClick];

}

/*

*NSThread创建线程方式

*1.先初始化线程

*2.start开启线程

*/

-(void)btnClick

{

//1.获取当前线程

NSThread * current = [NSThreadcurrentThread];

//主线程

NSLog(@"进入主线程--%@",current);

//获取主线程的另一中方式

NSThread*main =[NSThreadmainThread];

NSLog(@"主线程2--%@",main);

//执行一些耗时操作(分多一个线程)

[selfcreatNSTread];

}

-(void)creatNSTread

{

NSThread * thread1=[[NSThreadalloc]initWithTarget:selfselector:@selector(run:) object:@"线程A"];

//设置一个名称

thread1.name=@"线程A";

//开启线程

[thread1 start];

NSThread * thread2=[[NSThreadalloc]initWithTarget:selfselector:@selector(run:) object:@"线程B"];

//设置一个名称

thread2.name=@"线程B";

//开启线程

[thread2 start];

}

-(void)run:(NSString*)str

{

//获取当前线程

NSThread * current=[NSThreadcurrentThread];

//打印输出

for (int i=0; i<10; i++) {

NSLog(@"run--%@--%@",current,str);

}

}

运行结果:

/******************************创建NSTread线程方式2**************************************/

#import "ViewController.h"

//导入头文件

#import <pthread.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[self btnClick];

}

-(void)btnClick

{

//1.获取当前线程

NSThread * current = [NSThread currentThread];

//主线程

NSLog(@"进入主线程--%@",current);

//获取主线程的另一中方式

NSThread*main =[NSThread mainThread];

NSLog(@"主线程2--%@",main);

//执行一些耗时操作(分多一个线程)

[self creatNSTread2];

[self creatNSTead3];

}

/*

*NSTread创建线程方式2

*创建完线程直接启动(自动)

*/

-(void)creatNSTread2

{

[NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"第一线程"];

}

-(void)creatNSTead3

{

//在后台线程执行在子线程中执行

[self performSelectorInBackground:@selector(run:) withObject:@"第二线程"];

}

-(void)run:(NSString*)str

{

//获取当前线程

NSThread * current=[NSThread currentThread];

//打印输出

for (int i=0; i<10; i++) {

NSLog(@"run--%@--%@",current,str);

}

}

运行结果:

第一篇:NSTread线程的创建的更多相关文章

  1. Java多线程系列 基础篇02 线程的创建和运行

    1.线程创建的方式常用有两种 1. 继承 Thread 类创建线程 2. 实现 Runnable 接口创建线程 2.Thread 和 Runnable的区别 Thread和Runnable的相同点:都 ...

  2. JDFS:一款分布式文件管理实用程序第一篇(线程池、epoll、上传、下载)

    一 前言 截止目前,笔者在博客园上面已经发表了3篇关于网络下载的文章,这三篇博客实现了基于socket的http多线程远程断点下载实用程序.笔者打算在此基础上开发出一款分布式文件管理实用程序,截止目前 ...

  3. 线程开启的第一种方法:通过创建Thread的子类的对象的方式

    package cn.itcast.demo16.demo06.Thread;/** * @author newcityman * @date 2019/7/22 - 21:47 */public c ...

  4. Java线程入门第一篇

    Java线程的状态有6种 1.  初始(NEW):新创建了一个线程对象,但还没有调用start()方法. 2.  运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running) ...

  5. java 线程池第一篇 之 ThreadPoolExcutor

    一:什么是线程池? java 线程池是将大量的线程集中管理的类,包括对线程的创建,资源的管理,线程生命周期的管理.当系统中存在大量的异步任务的时候就考虑使用java线程池管理所有的线程.减少系统资源的 ...

  6. Java-多线程第一篇多线程相关认识(1)

    1.单线程进程 如果程序执行某行代码时遇到了阻塞,则程序将会停滞在该处. 2.进程代表着一个程序,程序是静态的,进程是动态的程序. 进程是系统进行资源分配和调度的一个独立单位.关于进程有如下3个特征: ...

  7. 【JAVA并发第一篇】Java的进程与线程

    1.进程与线程 1.1.进程 进程可以看作是程序的执行过程.一个程序的运行需要CPU时间.内存空间.文件以及I/O等资源.操作系统就是以进程为单位来分配这些资源的,所以说进程是分配资源的基本单位. ( ...

  8. 【JAVA并发第二篇】Java线程的创建与运行,线程状态与常用方法

    1.线程的创建与运行 (1).继承或直接使用Thread类 继承Thread类创建线程: /** * 主类 */ public class ThreadTest { public static voi ...

  9. 秒杀多线程第八篇 经典线程同步 信号量Semaphore

    阅读本篇之前推荐阅读以下姊妹篇: <秒杀多线程第四篇一个经典的多线程同步问题> <且不超过最大资源数量. 第三个參数能够用来传出先前的资源计数,设为NULL表示不须要传出. 注意:当 ...

随机推荐

  1. imx:MfgTool

    MfgTool使用方法: MfgTool很妖,写进去的img的名字一定要符合配置文件里面的命名标准. 具体要参见:        MFG_TOOL\Profiles\Linux\OS Firmware ...

  2. iOS 纯代码适配iPhone6,6+

    链接地址:http://blog.csdn.net/codywangziham01/article/details/37658399 转自:http://www.maxiaoguo.com/cloth ...

  3. Contributing to Open Source on GitHub(转)

    A great way to get involved in open source is to contribute to the existing projects you’re using. G ...

  4. MVC中关于JSON的处理

    jquery中提交数据     $.getJSON("/TopicUpdate/UpdateInformation", { "bookId": bookid } ...

  5. Hibernate的搭建及使用

    1.创建普通的java项目. 因为Hibernate是一个轻量级的框架,不像servlet,还必须需要tomcat的支持,Hibernate只要jdk支持即可. 2.引入jar包. 可以在项目中直接引 ...

  6. DB2 权限控制

    http://blog.csdn.net/liujinwei2005/article/details/8606983 http://www.ibm.com/developerworks/cn/data ...

  7. HDU 3756 Dome of Circus

    不会做,参见别人的程序: /* 底面为xy平面和轴为z轴的圆锥,给定一些点,使得圆锥覆盖所有点并且体积最小 点都可以投射到xz平面,问题转换为确定一条直线(交x,z与正半轴)使得与x的截距r 和与z轴 ...

  8. BZOJ 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚

    题目 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Description Farm ...

  9. sqlite性能简单測试

    主要測试sqlite在大数据量下的插入及查询性能: 測试环境:Centos6.4  1G内存  单核 数据量 大小 索引字段检索(耗时) 非索引字段检索(耗时) 总插入时间 10W 19M 0.001 ...

  10. c 这题做了半天,虽然做好了,但是思路还是不清晰,估计让我再做一次还是比较花时间的。

    输入一个大写字符,如F 比如: 输入:F 输出: FEDCBA EDCBAB DCBABC CBABCD BABCDE ABCDEF 输入 B 输出: BA AB #include<stdio. ...