iOS 多线程中 线程的执行过程和 状态

                                                            线程的基本流程

         创建线程是处于新建状态,start是就绪状态,会放入到可调度线程池里面(cpu看线程是否可以调 用,是看线程是否在可调度线程池里面),cpu调度他的时候就会进入运行状态,当这个线程的时间片用完之后,进入就绪状态。所以调用了start方法之后,线程会在运行状态和就绪状态之间进行来回的切换。当线程调用sleep方法时候会进入阻塞状态,进入阻塞状态的线程是不可以工作的,进入阻塞状态时候线程会从可调度线程池里面移除出来到内存里面。此时这个线程还存在只不过cpu不会调用他而已,当sleep时间到了之后,会又移入可调度线程池中进入就绪状态,当cpu调用的时候又会进入运行状态。// 当线程里面的任务执行完或者异常退出了之后进入死亡状态,死亡会移除可调用线程池,并且从内存释放,不会做任何事情不要想着重新启动线程。


1.创建线程,新建状态,NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(task)object:nil];

2.就是Start,到就绪

3.就是CPU的调度,在线程池里面的线程

4.中间可能有的线程的会加线程同步锁或者调用Sleep方法,这样这个线程就会从线程池里面出来,等待被唤醒后再进入线程池,CUP进行调用

5.调用结束就会杀死线程,并释放内存

你可能感兴趣的:(iOS 多线程中 线程的执行过程和 状态)