这篇“Java创建多线程的方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java创建多线程的方法有哪些”文章吧。

Java创建多线程的五种方法
(一)继承Thread类
1.实现描述
2.具体步骤
1)定义UserThread类,继承Thread类
2)重写run( )方法
3)创建UserThread对象
4)调用start( )方法
3.代码实现



4.注意事项
(二)实现Runnable接口
1.实现描述
2.具体步骤
1)定义一个UserRun类,实现Runnble接口
2)重写run( )方法
3)创建UserRun类的对象
4)创建Thread类的对象,UserRun类的对象作为Thread类构造方法的参数
5)启动线程
3.代码实现



4.注意事项
(三)实现Callable接口
1.实现描述
Callable接口如同Runable接口的升级版,其提供的call( )方法将作为线程的执行体,同时允许有返回值。
Callable对象不能直接作为Thread对象的target,因为Callable接口是 Java5 新增的接口,不是Runnable接口的子接口。
对于这个问题的解决方案,就引入 Future接口,此接口可以接受call( )的返回值,RunnableFuture接口是Future接口和Runnable接口的子接口,可以作为Thread对象的target。
2.具体步骤
1)定义类UserCallable,实现Callable接口
2)重写call( )方法
3)创建UserCallable的对象
4)创建RunnableFuture接口的子类FutureTask的对象,构造函数的参数是UserCallable的对象
5)创建Thread类的对象,构造函数的参数是FutureTask的对象
6)启动线程
3.代码实现



4.注意事项
(四)继承TimerTask类
1.实现描述
定时器类Timer和TimerTask可以做为实现线程的另一种方式。
Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。
TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。
2.具体步骤
1)定义类UserTimerTask,继承抽象类TimerTask
2)创建UserTask类的对象
3)创建Timer类的对象,设置任务的执行策略
3.代码实现



4.注意事项
(五)通过线程池启动多线程
1.实现描述
通过Executors 的工具类可以创建线程池。
提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行。
降低系统资源消耗,通过重用已存在的线程降低线程创建和销毁造成消耗。
方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并目会造成CPU过度切换。
2.实现方法
1) FixThreadPool(int n)固定大小的线程池
(1)具体步骤
① 通过Executors.newFixedThreadPool(5)创建固定大小的线程池
② 重写Runnable类的run( )方法,并使用线程池执行任务
③ Shutdown( )关闭线程池
(2)代码实现


(3)注意事项
2)SingleThreadExecutor( )单线程池
(1)具体步骤
① 通过Executors.newSingleThreadExecutor( )创建单线程池
② 重写Runnable类的run( )方法,并使用线程池执行任务
③ Shutdown( )关闭线程池
(2)代码实现

(3)注意事项
3)CachedThreadPool( )缓存线程池
(1)具体步骤
① 通过Executors.newCachedThreadPool( )创建尽可能多的线程池
② 重写Runnable类的run( )方法,并使用线程池执行任务
③ Shutdown( )关闭线程池
(2)代码实现


(3)注意事项
4)ScheduledThreadPool(int n)定时周期性线程池
(1)具体步骤
① 通过Executors.newScheduledThreadPool(5)创建固定核心线程数(最小维护的线程数,线程创建后不会被回收)的线程池,线程按计划定期执行。
② 重写Runnable类的run( )方法,并使用线程池执行任务
③ Shutdown( )关闭线程池
(2)代码实现


(3)注意事项
5)WorkStealingPool( )新线程池类ForkJoinPool的扩展
(1)具体步骤
① 通过Executors.newWorkStealingPool( )创建线程池
② 重写Runnable类的run( )方法,通过Thread类的对象调用Runnable类的对象,使用线程池执行任务
③ Sleep( )让主线程等待子线程执行完毕,也可以使用计数器的方式
④ Shutdown( )关闭线程池
(2)代码实现


(3)注意事项
以上就是关于“Java创建多线程的方法有哪些”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注天达云行业资讯频道。