文
章
目
录
章
目
录
Java面试题:说一下Java线程的创建方式有哪些?
得分点:
Thread、Runnable、Callable
标准回答:
在Java中,创建线程有三种主要方式,分别是通过继承Thread类、实现Runnable接口和实现Callable接口。
- 通过继承Thread类来创建线程:
- 定义一个继承Thread类的子类,并重写该子类的run()方法,该方法将作为线程的执行体。
- 创建子类的实例,即创建了线程对象。
- 调用线程对象的start()方法来启动线程的执行。
- 通过实现Runnable接口来创建线程:
- 定义一个实现Runnable接口的类,并实现该接口的run()方法,该方法将作为线程的执行体。
- 创建实现类的实例,并将其作为参数传递给Thread类的构造函数,创建Thread对象。
- 调用Thread对象的start()方法来启动线程的执行。
- 通过实现Callable接口来创建线程:
- 定义一个实现Callable接口的类,并实现call()方法,该方法将作为线程的执行体。
- 创建Callable实现类的实例,并使用它来创建一个FutureTask对象。
- 使用FutureTask对象作为参数,创建Thread对象,然后启动线程。
- 调用FutureTask对象的get()方法,可以获取子线程执行结束后的返回值。
总结起来,创建线程的方式实际上只有两种:继承Thread类和实现接口。而使用Runnable接口和Callable接口的方式的主要区别在于是否需要线程执行结束后的返回值。继承Thread类相对简单,但由于Java不支持多重继承,所以线程类不能再继承其他类。因此,通常情况下,更推荐使用实现接口的方式来创建线程。如果需要获得线程执行的返回值,可以选择使用Callable接口。