
实现多线程的四种方法
发布日期:2021-05-07 14:51:39
浏览次数:20
分类:原创文章
本文共 2304 字,大约阅读时间需要 7 分钟。
1.继承Thread类,重写run方法;2.实现Runnable接口,重写run方法;3.实现Callable接口,重写call方法;4.通过线程池实现多线程(实现Runnable接口+Executors创建线程池);
前2种方法无返回值,后2种方法有返回值。
继承Thread类,重写run方法
public class TTEST extends Thread{ @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { Thread t1 = new TTEST(); Thread t2 = new TTEST(); t1.setName("线程1"); t2.setName("线程2"); t1.start(); t2.start(); }
实现Runnable接口,重写run方法
public class RunnableThread implements Runnable{ @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); RunnableThread runnableThread = new RunnableThread(); Thread t1 = new Thread(runnableThread); t1.setName("线程1"); t1.start(); } }
实现Callable接口,重写call方法
因为FutureTask类实现了RunnaleFuture,而RunnaleFuture又实现了Runnable接口和Future接口,通过FutureTask封装继承Callable接口的类
import java.util.concurrent.Callable;import java.util.concurrent.FutureTask; public class CollableThread implements Callable<Object>{ @Override public Object call() throws Exception { System.out.println(Thread.currentThread().getName()); return null; } public static void main(String[] args) { System.out.println(Thread.currentThread().getName()); CollableThread collableThread = new CollableThread(); FutureTask<Object> futureTask = new FutureTask<Object>(collableThread); Thread t1 = new Thread(futureTask); t1.setName("线程1"); t1.start(); } }
通过线程池实现多线程(实现Runnable接口+Executors创建线程池)
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; public class PoolThread implements Runnable{ private static int POOL_NUM = 10;//线程池数量 @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { ExecutorService threadPool = Executors.newFixedThreadPool(5); for (int i = 0; i < POOL_NUM; i++) { PoolThread poolThread = new PoolThread(); threadPool.execute(poolThread); } threadPool.shutdown();//关闭线程池 } }
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年04月04日 08时12分51秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
真香!Linux 原来是这么管理内存的
2021-05-09
一文详解 Java 并发模型
2021-05-09
阅站无数!不过我只推荐下面这些
2021-05-09
值类型与引用类型(中)
2021-05-09
MSSQL 2005 数据库变成可疑状态
2021-05-09
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2021-05-09
秋色园引发CPU百分百命案的事件分析与总结
2021-05-09
安装jdk并配置环境变量
2021-05-09
稀疏数组
2021-05-09
js的严格模式
2021-05-09
ETL工具-KETTLE教程实例实战1----术语和定义
2021-05-09
idea的安装和无限期试用
2021-05-09
Oracle VM VirtualBox安装PVE虚拟机
2021-05-09
【转】如何用css限制文字长度,使溢出的内容用省略号…显示
2021-05-09
Android MediaPlayer setDataSource failed
2021-05-09
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2021-05-09
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2021-05-09
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2021-05-09
大前端的自动化工厂(1)——Yeoman
2021-05-09