多线程的生命周期

来源:互联网 发布:笔袋淘宝韩国女 编辑:程序博客网 时间:2024/05/16 17:21

转载地址:http://blog.csdn.net/allan_chan/article/details/6908439   

最近一个项目用多线程技术比较频繁,写下日记就算是一个总结吧

线程概念

线程的生命周期

线程的实现

线程优先级

多线程的同步

线程组

 

线程:程序中单独顺序的流控制,线程本身不能运行,只能运行在程序中。

多线程:指的是在单个程序中可以同时运行多个不同的线程执行不同的任务。

多线程编程的目的,就是“最大限度地利用CPU资源”当某一线程的处理不需要占用CPU而只和I/O等资源打交道时,

让需要占用CPU资源的其它线程有机会获得cpu资源,从根本上说,就是多线程编程的最终目的。

 

java中如果我们自已没有产生线程,那么系统就会给我们产生一个线程(主线程,main方法就在主线程上运行),我们的程序都是由线程来执行的

进程:就是执行中的程序(程序是静态的概念,进程是动态的概念)

线程与进程的区别:

多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响。

线程本身的数据通常只有寄存器数据,以及一个程序执行时使用的堆栈,所以线程切换比进程切换的负担要小。

 

线程包含的七种状态 :出生状态,就绪状态,运行状态,等待状态,休眠状态,阻塞状态和死亡状态。

出生状态:就是用户在创建线程时处于的状,在用户使用该线程实例调用start()方法之前线程都处于出生状态。

就绪状态:用户调用start()方法方法之后,线程处于就绪状态(又可称为可执行状态)。

运行状态:当线程得到系统资源后就进入运行状态。

 

一旦线程进入可执行状态,它会在就绪与运行状态 下辗转,同时也有可能进入等待,休眠,阻塞或死亡状态,

当处于运行状态下的线程调用thread类中wait()方法,该线程处于等待状态,

进入等待状态的线程必须调用thread类中notify()方法才能被唤醒,而notifyAll()方法是将所有处于等待状态下的线程唤醒,

当线程调用thread类中的sleep()方法,则会进入休眠状态,

如果一个线程在运行状态下发出输入/输出请求,该线程将进入阻塞状态,

在其等待输入/输出结束时,线程进入就绪状态,对于阻塞的线程来说,即使系统资源空闲,

线程依然不能回到运行状态,当线程的run()方法执行完毕时,线程进入死亡状态。

原创粉丝点击