runnable 和 thread 有什么区别
时间: 2023-08-18 08:08:10 浏览: 46
`Runnable` 和 `Thread` 都是 Java 多线程编程中的概念,它们之间有以下区别:
1. `Runnable` 是一个接口,而 `Thread` 是一个类;
2. `Runnable` 只有一个 `run` 方法,需要在 `Thread` 中实例化并传入 `Thread` 构造函数中,而 `Thread` 可以直接调用 `start` 方法启动线程;
3. 通过实现 `Runnable` 接口,可以避免由于 Java 的单继承限制而无法继承其他类;
4. 一个类可以实现多个 `Runnable` 接口,但是一个线程只能继承一个 `Thread` 类。
在实际开发中,`Runnable` 更加常用,因为它可以让代码更加灵活、可扩展,而且可以避免一些潜在的问题(如多继承、资源竞争等)。
相关问题
thread和runnable有什么区别
Thread 和 Runnable 都可以用来实现多线程,但有一些区别。Thread 是一个类,可以继承自定义线程类,实现 run 方法来编写线程代码;而 Runnable 是一个接口,可以实现 Runnable 接口,然后将其传递给 Thread 类的构造方法来创建线程。另外,一个类只能继承一个类,但却可以实现多个接口,所以使用 Runnable 接口可以使得类有更好的可扩展性和代码复用性。
说一下 runnable 和 callable 有什么区别
Runnable 和 Callable 都是 Java 中用于多线程编程的接口,它们的主要区别在于:
1. 返回值类型不同:Runnable 的 run() 方法没有返回值,而 Callable 的 call() 方法可以返回一个结果。
2. 抛出异常不同:Runnable 的 run() 方法不能抛出异常,而 Callable 的 call() 方法可以抛出异常。
3. 使用方式不同:Runnable 可以通过 Thread 类的构造方法或者 Executor 接口的 execute() 方法来执行,而 Callable 只能通过 Executor 接口的 submit() 方法来执行。
因此,如果需要在多线程中执行一个任务并返回结果,可以使用 Callable 接口;如果只需要执行一个任务而不需要返回结果,可以使用 Runnable 接口。