多线程的六种实现方式:知识总结(二)

实现多线程的主要有两种方式:一种是继承Thread类,另一种是实现Runnable接口.两种方式都很相似。第一去实现这个线程任务(线程类{ void run(){方法体}}),然后去执行这个线程任务(线程类.start())

一.继承Thread类

       步骤:

              1.创建类并继承Thread类

              2.重写run方法

              3.创建该类的实例

             4.调用该类的strat()方法,直接调用run方法不会去开启线程,只会以普通方法运行

二.实现Runnable 

       步骤:

              1.创建类并实现Runnable接口

              2.重写run方法

              3.创建该类的实例

              4.调用strat()方法

三.内部类的方式

       步骤:

              1.创建类并定义一个方法

              2.基于第一种方式

                            new Thread {(重写run()方法)} .start()

                  基于第二种方式

                            new Thread(new Runnable() {重写run()方法}.start() 

              3.创建该类的实例

              4.调用该方法

四.定时器的方式(定时器是基于线程创建的工具类)

       步骤:

              1.创建定时器Timer()的实例.在初始化Timer时 ,开启一个线程循环提取任务数组中的任务,如果任务数组为空,线程等待直到添加任务;

              2.调用该实例的方法schedule( new TimerTask(){重写run方法},延迟时间) 

  TimerTask表示Timer中可以被执行的任务。实现了Runable接口

五.带返回值的线程实现

       步骤:

            1. 创建一个类实现Callable接口,实现call方法。与Runnable接口有点相似,但比Runnable、更加强大,增加了异常和返回值。

              2. 创建一个FutureTask,指定Callable对象,做为线程任务。

              3. 创建线程,指定线程任务。

              4. 启动线程      

六.基于线程池的方式(线程池主要解决处理器单元内多个线程执行的问题)

       步骤:

             1.创建线程池对象   ExecutorService thread = Executors.newFixedThreadPool(5); 获得固定长度的线程池

             2.利用该对象实例.execute(new Runnable(){实现run()方法})来提交线程任务

猜你喜欢

转载自blog.csdn.net/qq_41706675/article/details/82388659