Java 创建线程有哪几种方式?
- 继承 Thread 类:重写其 run() 方法,然后 start() 调用。
- 实现 Runnable 接口:创建一个实现了 Runnable 接口的类,并实现 run() 方法,将其传递给 Thread 对象。
- 实现 Callable 接口:实现 call() 方法。需要使用 Thread + FutureTask 配合。适合需要在未来某个时刻获取 Callable 任务的计算结果的场景。
- 使用线程池:使用 Executors 类创建线程池,通过线程池来管理线程的创建和复用。
线程start和run的区别?
- run 方法是线程的执行体,包含线程要执行的代码。但是调用 run 方法只会在当前线程的上下文中执行,不会创建一个新线程。
- start 方法会创建一个新线程,然后执行 run 方法中的代码。调用 start 方法会为线程分配系统资源,并将线程处于就绪状态。当调度器选择新线程后,就会执行 run 方法中的代码。
因此,虽然可以直接调用 run 方法,但这并不会创建一个新线程,而是在当前线程中执行。要想实现多线程执行,则必须调用 start 方法开启一个新线程。

被折叠的 条评论
为什么被折叠?



