多线程
程序:一段静态的代码。
进程:程序的一次动态执行过程,它对应从代码加载、执行到执行完毕的一个完整过程。
进程也称任务,支持多个进程同时执行的OS就被称为多进程OS或多任务OS。
在一个程序内部也可以实现多个任务并发执行,其中每个任务称为线程。
线程是比进程更小的执行单位,它是在一个进程中独立的控制流,即程序内部的控制流
特点:线程不能独立运行,必须依赖于进程,在进程中运行。
每个程序至少有一个线程称为主线程
单线程:只有一条线程的进程称为单线程
多线程:有不止一个线程的进程称为多线程
充分利用系统资源,提高效率。通过在一个程序内部同时执行多个流程,可以充分利用CPU等系统资源,从而最大限度的发挥硬件的性能。
当程序中的线程数量比较多时,系统将花费大量的时间进行线程的切换,这反而会降低程序的执行效率。
相对于优势来说,劣势还是很有限的,所以现在的项目开发中,多线程编程技术得到了广泛的应用。
Java语言提供了3种实现方式
继承Thread类
实现Runnable接口
使用Timer和TimerTask组合。
线程的特性:随机性,系统在执行多线程程序时只保证线程是交替执行的,至于哪个线程先执行哪个线程后执行,则无法获得保证,需要书写专门的代码才可以保证执行的顺序。
对于同一个线程类,也可以启动多个线程。
Thread2 t2 = new Thread2(); t2.start();
Thread2 t3 = new Thread2(); t3.start();
同一个线程不能启动两次,例如
Thread2 t2 = new Thread2();
t2.start(); t2.start(); //错误
当自定义线程中的run方法执行完成以后,则自定义线程自然死亡。而对于系统线程来说,只有当main方法执行结束,而且启动的其它线程都结束以后,才会结束。当系统线程执行结束以后,程序的执行才真正结束。
进程也称任务,所以支持多个进程同时执行的操作系统被称为多进程操作系统或多任务的操作系统。
线程的生命周期与线程状态
新建状态(New)
就绪状态(Runnable)
运行状态(Run)
阻塞状态(Block)
终止状态(Dead)
public finai intgetPriority() //获得线路的优先级
public final voidsetPriority(int newPriority) //设定线路的优先级