实现多线程的主要有两种方式:一种是继承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()方法})来提交线程任务