网站首页 > 精选教程 正文
Java中的多线程允许多个线程并发运行,从而能够同时执行多个任务。线程是程序中的轻量级 进程,它们共享相同的内存空间。本指南将介绍在Java中使用两种主要方法创建和启动线程的基础知识:扩展Thread类和实现Runnable接口。
目录
- 1. 线程简介
- 2. 通过扩展Thread类创建线程
- 3. 通过实现Runnable接口创建线程
- 4. 使用Lambda表达式创建线程
- 5. 常用线程方法
- 6. 示例程序
- 7. 结论
1. 线程简介
线程是可以与其他线程并发运行的轻量级进程。Java通过java.lang.Thread类和java.lang.Runnable接口提供了对多线程的内置支持。多线程可以通过更好地利用系统资源来提高 应用程序的性能。
2. 通过扩展Thread类创建线程
在Java中创建线程的一种方法是扩展Thread类并覆盖其run方法。
示例:
class MyThread extends Thread {
@Override
public void run() {
System.out.println("线程正在运行。");
}
public static void main(String[] args) {
MyThread thread = new MyThread(); // 创建一个线程对象
thread.start(); // 启动线程
}
}
解释:
- o MyThread类扩展了Thread类。
- o run方法包含将由线程执行的代码。
- o 在main方法中,创建了一个MyThread对象,并调用start方法来启动线程。
3. 通过实现Runnable接口创建线程
在Java中创建线程的另一种方法是实现Runnable接口,并将实现类的实例传递给Thread对象。
示例:
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("线程正在运行。");
}
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable(); // 创建一个可运行对象
Thread thread = new Thread(myRunnable); // 将可运行对象传递给Thread对象
thread.start(); // 启动线程
}
}
解释:
- o MyRunnable类实现了Runnable接口。
- o run方法包含将由线程执行的代码。
- o 在main方法中,创建了一个MyRunnable对象,将其传递给Thread对象,并调用start方法来启动线程。
4. 使用Lambda表达式创建线程
从Java 8开始,您可以使用Lambda表达式以更简洁的方式创建线程。
示例:
public class LambdaThreadExample {
public static void main(String[] args) {
Runnable task = () -> System.out.println("线程正在运行。");
Thread thread = new Thread(task);
thread.start();
}
}
解释:
- o Lambda表达式用于定义Runnable接口的run方法。
- o Lambda表达式被传递给Thread对象,并调用start方法来启动线程。
5. 常用线程方法
- o start():启动线程的执行。run方法由 Java虚拟机(JVM)调用。
- o run():包含将由线程执行的代码。此方法由线程的start方法调用。
- o sleep(long millis):暂停当前线程的执行指定的毫秒数。
- o join():等待线程终止。此方法用于确保一个线程在另一个线程开始之前完成其执行。
- o isAlive():如果线程仍在运行或未终止,则返回true。
6. 示例程序
示例1:扩展Thread类
class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("线程运行中:" + i);
}
}
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
示例2:实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("线程运行中:" + i);
}
}
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
示例3:使用Lambda表达式
public class LambdaThreadExample {
public static void main(String[] args) {
Runnable task = () -> {
for (int i = 0; i < 5; i++) {
System.out.println("线程运行中:" + i);
}
};
Thread thread = new Thread(task);
thread.start();
}
}
7. 结论
在Java中创建和启动线程可以通过多种方法完成,包括扩展Thread类、实现Runnable接口以及使用Lambda表达式。每种方法都有其特定的用例和优势。了解这些方法和常见的线程操作可以帮助您在Java 应用程序中有效地利用多线程。
更多关于Java多线程教程可点击系列专栏:
https://java.didispace.com/java-multithreading/
猜你喜欢
- 2025-05-02 轻松掌握Java多线程 - 第六章:volatile关键字
- 2025-05-02 面试官:说说Java对象的创建过程(java创建对象有什么用)
- 2025-05-02 为什么阿里巴巴Java开发手册禁止使用Executors创建线程池?
- 2025-05-02 linux:线程的3种实现方式(内核级,用户级和混合型)
- 2025-05-02 Java线程池核心参数调优指南:掌控并发世界的钥匙
- 2025-05-02 互联网大厂后端开发必看!Java 内部类 4 种实现方式深度解析
- 2025-05-02 Java多线程编程:一场与并发世界的奇妙冒险
- 2025-05-02 Java线程与并发:一场神奇的舞蹈(java线程是并行的吗)
- 2025-05-02 Java线程池的四种用法与使用场景(java线程池的原理和实现)
- 2025-05-02 网易面试:SpringBoot如何开启虚拟线程?
你 发表评论:
欢迎- 最近发表
-
- 2024最全版本奖状证书模板素材,含PSD和word格式,附带预览图
- 免费领取 | 第十三届“三创赛”项目计划书Word模板
- 用Word就能做高大上的论文封面,你信吗?小白也能学会
- Word排版有何难?教你30秒创建模板,节省大把手动排版的时间
- Word“联手”Excel写报告(电脑右键新建没有word和excel怎么办)
- 柚墨个人简历Word模板分享(柚墨ppt)
- 建筑工程刚需,全套安全技术交底模板整理,word 版本可编辑直接用
- [word] word 2013 如何套用模版(怎么套用模版文件)
- 114套证书授权书任命书模板,word文件精美背景,合并套打不操心
- 根据模板将Exce明细数据生成 Word 文档|邮件合并
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)