[Java]Java初学之多线程02--创建线程
Intro
Java线程的创建有三种方法,本文主要记录、总结其中两种方法(Thread, Runnable)的实现以及各自的优缺点。
正文
Java中,创建线程的两种方法分别是
第一种:继承Thread类
第二种:实现Runnable接口
继承Thread类
先说第一种,通过继承Thread类创建线程。
通过翻查JDK的帮助文档,我们可以找到官方的指导,如图所示
总结下来,创建的流程就是这样
- 自定义线程类继承Thread类
- 重写run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
知道了怎么创建,就可以开始写啦,很快就可以写一个简单demo:
package com.multiThread;
//this is a demo about how to creat a thread
//创建线程的方法1:继承Thread类,重写run()方法,调用Start开启线程
public class demo01 extends Thread {
@Override
public void run() {
//run方法线程体
for (int i = 0; i < 20; i++) {
System.out.println("SUB the" + i + "time");
}
}
public static void main(String[] args) {
//main线程(主)
demo01 testThread = new demo01();
//调用Start方法则主线程子线程一起跑(CPU调度执行),因此SUB MAIN互相穿插
//如果调用run则顺序执行
//testThread.run();
testThread.start();
for (int i = 0; i < 20; i++){
System.out.println("MAIN the" + i + "time");
}
}
}
执行的结果是MAIN和SUB交错输出,由CPU调度执行主/子线程,所以每次运行输出的结果都会有所不同
实现Runnable接口
第二种方法是通过实现Runnable接口来创建线程
在JDK帮助文档的Thread部分继续往下翻看就能看到第二种方法的官方指导,如图所示
总结下来,创建的流程就是这样
- 自定义线程类实现Runnable接口
- 实现run()方法,编写线程执行体
- 创建线程对象,调用start()方法启动线程
一个简单的demo:
package com.multiThread;
//创建线程的第二种方法:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,调用start方法
public class demo03 implements Runnable {
@Override
public void run() {
//run方法线程体
for (int i = 0; i < 20; i++) {
System.out.println("SUB the" + i + "time");
}
}
public static void main(String[] args) {
//创建Runnable接口的实现类对象
demo03 testThread3 = new demo03();
//创建线程对象,通过线程对象来开启线程,代理
// Thread thread = new Thread(testThread3);
// thread.start(); 此两行可以总结为下一行
new Thread(testThread3).start();
for (int i = 0; i < 20; i++){
System.out.println("MAIN the" + i + "time");
}
}
}
最后的输出也是和上面一样的
小结
继承Thread类
- 具备多线程能力
- 启动线程:子类对象.start();
- 不建议使用:避免OOP单继承的局限性
实现Runnable接口
- 具有多线程能力
- 启动线程:传入目标对象+Thread对象.start();
- 推荐使用:灵活方便,方便同一个对象被多个线程使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix