今天复习了流的知识。主要讲解了多线程的概念以及如何使用多线程。线程的周期和状态。
一、 多线程的概念
a) 程序与进程 进程也称任务,支持多个进程同时执行的OS就被称为多进程OS或多任务OS。
b) 进程与线程:在一个程序内部也可以实现多个任务并发执行,其中每个任务称为线程。线程是比进程更小的执行单位,它是在一个进程中独立的控制流,即程序内部的控制流。
c) 线程:特点:线程不能独立运行,必须依赖于进程,在进程中运行。每个程序至少有一个线程称为主线程。单线程:只有一条线程的进程称为单线程。多线程:有不止一个线程的进程称为多线程
d) 开启多线程的优点和缺点
i. 提高界面程序响应速度。通过使用线程,可以将需要大量时间完成的流程在后台启动单独的线程完成,提高前台界面的相应速度。
ii. 充分利用系统资源,提高效率。通过在一个程序内部同时执行多个流程,可以充分利用CPU等系统资源,从而最大限度的发挥硬件的性能。
iii. 当程序中的线程数量比较多时,系统将花费大量的时间进行线程的切换,这反而会降低程序的执行效率。但是,相对于优势来说,劣势还是很有限的,所以现在的项目开发中,多线程编程技术得到了广泛的应用。
二、 多线程实现 实现方法:继承Thread类、实现Runnable接口、使用Timer和TimerTask组合
a) 继承Thread线程类实现多线程 重写Thread中的run()方法。 静态方法sleep(毫秒数)。使系统休眠多少毫秒
class MyThread extends Thread{
public void run(){
//线程体
}
}
b) 实现Runnable接口
i. 多线程对象实现java.lang.Runnable接口并且在该类中重写Runnable接口的run方法。
ii. 实现Runable接口的方法避免了单继承的局限性。
class MyThread2 implements Runable{
public void run(){} //重写Runable接口中的run()方法
}
MyThread2 mt1=newMyThread2();
Thread t1=new Thread(mt1);
t1.start(); //启动线程
三、线程的生命周期
线程是一个动态执行的过程,它也有一个从产生到死亡的过程,这就是所谓的生命周期。一个线程在它的生命周期内有5种状态:
新建 Thread t1=new Thread();
就绪 t1.start()
运行 线程获得CPU资源正在执行任务(run()方法),
死亡 自然终止:正常运行run()方法后终止
异常终止:调用stop()方法让一个线程终止运行
堵塞 sleep()方法。使线程进入睡眠方式。
正在等待:调用wait()方法。
被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)