多线程的2种实现方式

来源:互联网 发布:洗菜盆 知乎 编辑:程序博客网 时间:2024/05/29 13:23
        说到线程,首先想到的是进程的概念。

        进程:是一个正在执行中的程序。每一个进行执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。

        线程:就是进程中的一个独立的控制单元。线程在控制着进程的执行。

        进程vs线程:一个进程中至少有一个线程。

        Java VM启动的时候会有一个进程java.exe该进程中至少一个线程负责Java程序的执行。而且这个线程运行的代码存在于main方法中。该线程称之为主线程。

创建线程的2种实现方式:

        1、继承Thread。

        2、实现Runnable。

继承Thread的步骤:

        1、继承Thread方法。

        2、复写Thread类中的run方法

                目的:将自定义代码存储在run方法。让线程运行。

        3、调用线程的start方法。

                作用2个:启动线程;调用run方法。

实现Runnable的步骤:

        1、定义类实现Runnable接口

        2、覆盖Runnable接口中的run方法

                将线程要运行的代码存放在该run方法中。

        3、通过Thread类建立线程对象。

        4、将Runnable接口的子类对象作为实际参数传递给thread类的构造方法

                因为自定义的run方法所属的子类对象是Runnable接口的子类对象。所以要让线程去指定对象的run方法。就必须明确该run方法所属对象。

        5、调用Thread类的start方法开启线程并调用runnable接口子类的run方法。

两种方式对比:

        它们的线程代码存放的位置不一样。

        继承Thread:线程代码存放Thread子类run方法中。

        实现Runnable:线程代码存在接口的子类的run方法中。

        实现Runnable接口的方式避免单继承的局限性。


        线程的运行状态:创建、运行、冻结、消亡、阻塞。


   冻结到运行之前,先到阻塞状态(此时具有执行资格),等待cpu资源。拿到cpu资源了,也就是具有了执行权限了,才会进入运行状态。

总结:

    多线程,在有一定的代码量的基础上去理解,更有一种水到渠成的感觉。

    下一篇会介绍多线程的线程安全问题。



原创粉丝点击