Java面试精华:深入理解线程与Runnable接口
需积分: 9 45 浏览量
更新于2024-09-12
收藏 73KB DOC 举报
Java多线程面试题是Java开发者经常被问到的话题,它涉及到对并发编程的理解和实践能力。下面详细解析了面试中常见的两个关键知识点:
1. 定义线程:
- Java中的线程有两种实现方式:
a) **扩展Thread类**:通过继承Thread类并重写`run()`方法来创建线程。`run()`方法是线程的主要执行入口,如果线程是通过Runnable实例化,那么这个方法会调用Runnable对象的`run()`方法。需要注意的是,如果线程是直接创建自Thread类,`run()`方法通常不执行任何操作。
b) **实现Runnable接口**:另一种创建线程的方式是实现Runnable接口,然后将实现类传给Thread的构造函数。这样创建的线程同样会调用Runnable的`run()`方法。Runnable接口提供了一种更灵活的方式来定义线程行为,因为一个类可以同时实现多个接口。
2. 实例化和启动线程:
- **实例化线程**:
- 如果使用Thread类创建线程,可以直接new一个Thread对象。
- 如果使用Runnable接口,可以通过Thread的构造器传入Runnable实例,如`Thread(Runnable target)`,还可以指定线程名称和堆栈大小。
- **启动线程**:至关重要的一步是调用Thread对象的`start()`方法,而不是`run()`。`start()`方法会执行以下步骤:
- 将线程从新建状态转变为可运行状态。
- 创建一个新的执行上下文(调用栈),并将线程放入线程池中等待调度。
- 当线程获得CPU执行权时,它会执行Runnable的`run()`方法,执行实际的业务逻辑。
- **注意事项**:虽然`run()`方法在Runnable和Thread类中都可以调用,但它本身并不启动线程。只有当调用`start()`方法时,线程才会被创建并开始执行。
举例来说,创建一个实现了Runnable接口的简单线程类,如`DoSome`,代码可能如下:
```java
public class DoSome implements Runnable {
// ...
public void run() {
// 在这里编写线程执行的具体操作
}
public static void main(String[] args) {
Thread thread = new Thread(new DoSome(), "MyThread"); // 使用Runnable和名字创建线程
thread.start(); // 启动线程
}
}
```
理解这些概念对于Java开发者来说至关重要,它们涉及到线程生命周期管理、并发控制和资源同步等方面的基础知识,也是面试官评估候选人多线程编程能力和经验的重要依据。
143 浏览量
2021-09-14 上传
2011-07-01 上传
2012-05-19 上传
2009-11-02 上传
2024-01-01 上传
2023-02-13 上传
2023-02-13 上传
Jason_Yang
- 粉丝: 0
- 资源: 4
最新资源
- Court-Counter:这个程序将帮助更新两队的得分
- changsikkwon.github.com
- 易语言DUI图形编辑器源码-易语言
- app-livetrace:Enonic XP的LiveTrace应用程序
- 代码前30天
- line-chatbot
- love_story
- 记录python,pytorch,git等工具的学习过程,主要是对该工具常用部分进行实践。.zip
- circuitry:Web Audio API 电路可视化工具
- dbms-online-voting-system:为了使投票更加安全并允许每个有资格投票的人
- 乌尔纳电子
- filess:ファイルを整理するためのCLIツール
- 简单的python爬虫学习.zip
- guava-12.0.1-API文档-中文版.zip
- 行业文档-设计装置-一种点钞机纸币回转系统.zip
- landing-page-with-form:带有表单的登录页面