认识多线程
当我们打开任务管理器的时候可以看到这样的画面,里面的每个应用程序都是由一个或者多个进程组成的,
而线程是比进程更小的执行单位,它是在一个进程中独立的控制流,即程序内部的控制流。
· 单线程:只有一条线程的进程称为单线程;
· 多线程:有不止一个线程的进程成为多线程;
· 每个程序至少有一个线程称为主线程。
一、多线程的优点
二、多线程的缺点
线程的使用
多线程的使用方法:
线程的生命周期
线程的生命周期包含以下五个状态。
1、新建状态;(new) 代表线程的对象已经被初始化,但没启动。线程对象已经创建,准备工作完成。
2、就绪状态;(Runnbale)调用start()方法时,该线程进入就绪状态。
3、运行状态;(Run) 处于该状态的线程在CPU内部执行。
4、阻塞状态;(Block) 线程处于执行状态,但由于没有获得CPU的执行时间,而处于CPU外部等待线程被执行的状态。
5、终止状态;(Deak) 线程执行结束,释放线程所占用的系统资源,结束线程执行的状态。(自然撤销或被停止)
线程的常用调度方法
1.线程睡眠 sleep()可使程序由运行状态进入不可运行状态,睡眠时间过后再次进入可运行状态。
2.暂停线程 yield() 暂停当前正在执行的线程对象,并执行其他线程。
3.连接线程 join() (1) join()等待该线程终止。(2) join
4.中断线程 interrupt()中断线程。
5.getname() 返回该线程的名称……
当我们打开任务管理器的时候可以看到这样的画面,里面的每个应用程序都是由一个或者多个进程组成的,
而线程是比进程更小的执行单位,它是在一个进程中独立的控制流,即程序内部的控制流。
· 单线程:只有一条线程的进程称为单线程;
· 多线程:有不止一个线程的进程成为多线程;
· 每个程序至少有一个线程称为主线程。
一、多线程的优点
- 可以提高前台的运行速度;使程序中那些需要大量时间完成的流程在后台单独开启的流程完成,提高程序的响应速度。
- 充分利用系统资源,提高效率;可以同时执行多个流程,充分利用CPU等系统资源,从而最大限度的发挥硬件的性能。
二、多线程的缺点
- 如果程序中线程数量比较多时,系统就会花大量时间在切换线程上,反而会影响程序响应的速度。
线程的使用
多线程的使用方法:
- 继承Thread类然后创建run()方法,创建对象,调用start()方法;(使用start方法调用的是run()方法)
- 实现Runnable接口重写run()方法,首先创建Runnbale类的对象,然后以该对象为基础创建Thread类的对象,调用start()方法。
线程的生命周期
线程的生命周期包含以下五个状态。
1、新建状态;(new) 代表线程的对象已经被初始化,但没启动。线程对象已经创建,准备工作完成。
2、就绪状态;(Runnbale)调用start()方法时,该线程进入就绪状态。
3、运行状态;(Run) 处于该状态的线程在CPU内部执行。
4、阻塞状态;(Block) 线程处于执行状态,但由于没有获得CPU的执行时间,而处于CPU外部等待线程被执行的状态。
5、终止状态;(Deak) 线程执行结束,释放线程所占用的系统资源,结束线程执行的状态。(自然撤销或被停止)
线程的常用调度方法
1.线程睡眠 sleep()可使程序由运行状态进入不可运行状态,睡眠时间过后再次进入可运行状态。
2.暂停线程 yield() 暂停当前正在执行的线程对象,并执行其他线程。
3.连接线程 join() (1) join()等待该线程终止。(2) join
(long millis)等待该线程终止的时间最长为 millis
毫秒。(3)、join(long millis, int nanos)
等待该线程终止的时间最长为 millis
毫秒 + nanos
纳秒。
4.中断线程 interrupt()中断线程。
5.getname() 返回该线程的名称……