Java多线程的几种写法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,Java多线程的在开发中用到的很多,简单总结一下几种写法,分别是继承Thread方法,实现Runnable接口,实现Callable接口;1.继承Thread方法class TestThread ex
千家信息网最后更新 2026年11月02日Java多线程的几种写法
Java多线程的在开发中用到的很多,简单总结一下几种写法,分别是继承Thread方法,实现Runnable接口,实现Callable接口;
1.继承Thread方法
class TestThread extends Thread{ String name; public TestThread(String name){ this.name=name; } @Override public void run() { for (int i = 0; i < 6; i++) { System.out.println(this.name+":"+i); } }}main方法调用:
Thread启动有两个方法,一个是start()方法,一个是run()方法,但是直接调用run方法时线程不会交替运行,而是顺序执行,只有用start方法时才会交替执行
TestThread tt1 = new TestThread("A"); TestThread tt2 = new TestThread("B"); tt1.start(); tt2.start();运行结果:
2.实现Runnable接口,有多种写法
2.1外部类
class TestRunnable implements Runnable{ String name; public TestRunnable(String name){ this.name=name; } @Override public void run() { for (int i = 0; i < 6; i++) { System.out.println(this.name+":"+i); } }}调用:
TestRunnable tr1 = new TestRunnable("C"); TestRunnable tr2 = new TestRunnable("D"); new Thread(tr1).start(); new Thread(tr2).start();2.2匿名内部类方式
new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start();2.3 Lamda表达式,jdk1.8,只要是函数式接口,都可以使用Lamda表达式或者方法引用
new Thread(()->{ for (int i = 0; i < 6; i++) { System.out.println(i); } }).start();2.4ExecutorService创建线程池的方式
class TestExecutorService implements Runnable{String name;public TestExecutorService(String name){ this.name=name;} @Override public void run() { for (int i = 0; i < 6; i++) { System.out.println(this.name+":"+i); } }}调用:可以创建固定个数的线程池
ExecutorService pool = Executors.newFixedThreadPool(2); TestExecutorService tes1 = new TestExecutorService("E"); TestExecutorService tes2 = new TestExecutorService("F"); pool.execute(tes1); pool.execute(tes2); pool.shutdown(); 运行结果跟2.1差不多
3.实现Callable接口,可以返回结果
//Callable提供返回数据,根据需要返回不同类型class TestCallable implements Callable{ private int ticket = 5; @Override public String call() throws Exception { for (int i = 0; i < 5; i++) { if(this.ticket>0) System.out.println("买票,ticket="+this.ticket--); } return "票卖完了"; }} 调用:
Callable tc = new TestCallable(); FutureTask task = new FutureTask(tc); new Thread(task).start(); try { System.out.println(task.get());//获取返回值 } catch (InterruptedException | ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } 运行结果:
方法
接口
线程
结果
运行
写法
方式
表达式
不同
差不多
两个
个数
中用
函数
只有
多种
完了
数据
类型
而是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重生之互联网科技帝国
科技互联网项目
新华互联网科技学院
互联网科技金融
有木互联网科技
一五八零互联网科技
联恩商钥互联网科技有限公司
恒银科技与互联网金融
央行互联网金融科技公司
昊天互联网科技有限公司
消费医药和互联网科技
河南住房之家互联网科技
区块链结合互联网科技
云南省自由互联网科技有限公司
卡尔迅互联网科技有限公司
神州科技互联网有限公司
北京天晋互联网科技有限公司
科技和互联网行业的特点
优雇互联网科技有限公司
颐高云石互联网科技
科技创新与互联网经济
易互联网科技有限公司
广州新华互联网科技学校电竞方面
明优互联网科技有限公司
互联网数据科技专业
领航科技大厦互联网公司
易租星互联网科技有限公司
互联网科技和医药行业
华人运通互联网科技公司
互联网的黑科技实验室