多线程讲解

来源:互联网 发布:炼数成金 黄志洪 知乎 编辑:程序博客网 时间:2024/06/09 17:12

      今天复习了流的知识。主要讲解了多线程的概念以及如何使用多线程。线程的周期和状态。

一、    多线程的概念

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()方法恢复)

原创粉丝点击