Java实现多线程:Thread类与Runnable接口
需积分: 1 64 浏览量
更新于2024-08-05
收藏 1KB MD 举报
本文档介绍了在Java中实现多线程的两种基本方法,即继承Thread类和实现Runnable接口。
在Java编程中,多线程是并发执行多个任务的能力,这对于提高程序的效率和响应性至关重要。Java提供了两种主要的方式来创建和管理线程:
1. 继承Thread类 - extends Thread
当一个类继承自Thread类时,它本身就成为一个线程类。你需要重写`run()`方法,在其中定义线程执行的任务。然后,通过调用`start()`方法来启动线程。下面是一个示例:
```java
public class TestThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我在学习多线程" + i);
}
}
public static void main(String[] args) {
TestThread tt = new TestThread();
tt.start();
for (int i = 0; i < 100; i++) {
System.out.println("我在摸鱼" + i);
}
}
}
```
在这个例子中,`TestThread`类扩展了`Thread`类并实现了`run()`方法。在`main`方法中,创建了一个`TestThread`实例并启动,同时主线程(`main`方法所在的线程)也在执行。
2. 实现Runnable接口 - implements Runnable
另一种方式是创建一个实现Runnable接口的类,并在`run()`方法中定义线程任务。然后,将Runnable对象作为参数传递给Thread类的构造函数,创建一个新线程。启动线程依然通过调用`start()`方法。以下是一个示例:
```java
public class TestRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我在学习多线程" + i);
}
}
public static void main(String[] args) {
TestRunnable tr = new TestRunnable();
new Thread(tr).start();
for (int i = 0; i < 100; i++) {
System.out.println("我在摸鱼" + i);
}
}
}
```
在这个例子中,`TestRunnable`类实现了Runnable接口,而不是直接继承Thread。这允许你避免了Java的单继承限制,因为一个类可以实现多个接口。
无论是继承Thread还是实现Runnable,`start()`方法都会调用`run()`方法来执行线程任务。但是,`start()`方法不同于直接调用`run()`,前者会创建一个新的线程并在新的上下文中运行,而后者则是在当前线程中执行。
多线程编程中还需要关注线程安全、同步控制、死锁等问题。例如,当多个线程访问共享资源时,可能会出现数据不一致的情况,这时可以使用`synchronized`关键字来实现线程同步,确保同一时间只有一个线程可以执行特定代码块。此外,`wait()`、`notify()`和`notifyAll()`方法可以用于线程间的通信和协作。
理解和熟练掌握Java中的多线程技术对于编写高效、响应迅速的程序至关重要。
2020-09-22 上传
2006-02-23 上传
点击了解资源详情
2020-12-24 上传
2020-09-03 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
Nick5412
- 粉丝: 27
- 资源: 1
最新资源
- wadegao.github.io:韦德高的个人主页
- pcsetup:从零开始设置我的个人计算机的脚本
- A2G-2020.0.1-py3-none-any.whl.zip
- 升降台程序11.rar
- MDN-note
- Kyhelper:考研助手,利用了Bmob移动后端云服务平台和腾讯旗下的微社区,感谢imooc网和校园小菜的技术指导。 给考研学子们提供一个方便的工具,可以让他们收起鼠标和键盘,逃离喧闹狼藉的宿舍,在自习室里用手机就能查看大部分最重要的考研相关信息。在考研备考过程中要时常打开电脑上网到处浏览与考研相关的信息,生怕错过什么重要通知,那么,如果能有这么一款手机应用,它能够给考研学生带来一定的帮助,成为学子贴身的考研小助手,从而使他们更好地高效率的投入到自己的复习当中。 比如说,看书累了
- michaelkulbacki.github.io:我的个人网站上展示了我的计算机科学项目和摄影作品
- gmod-Custom_FOV:Garry Mod的插件,可以更改fov值
- wfh.vote
- minesweeper-cljs:使用leiningen和figwheel在ClojureScript中实现扫雷游戏的实现
- 2013-2019年重庆理工大学825管理学考研真题
- gulp-font2css:使用 Gulp 将字体文件编码为 CSS @font-face 规则
- 3.14159.in:pi数字的彩色渲染
- AABBTree-0.0a0-py2.py3-none-any.whl.zip
- DataMiningLabTasks
- 机器学习文档(transformer, BERT, BP, SVD)