Java创建线程有哪几种方式?
在 Java 中,创建线程有多种方式,主要包括使用 Thread 类和实现 Runnable 接口。以下是几种常见的创建线程的方式:
-
继承
Thread类:通过继承
Thread类并重写run方法来创建线程。class MyThread extends Thread {public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}} }public class ThreadExample {public static void main(String[] args) {MyThread thread1 = new MyThread();MyThread thread2 = new MyThread();thread1.start();thread2.start();} } -
实现
Runnable接口:通过实现
Runnable接口并将其传递给Thread类来创建线程。这种方式更灵活,因为一个类可以实现多个接口,而 Java 中是单继承的。class MyRunnable implements Runnable {public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}} }public class RunnableExample {public static void main(String[] args) {MyRunnable myRunnable = new MyRunnable();Thread thread1 = new Thread(myRunnable);Thread thread2 = new Thread(myRunnable);thread1.start();thread2.start();} } -
使用匿名类:
通过匿名类创建线程,适用于一次性使用的情况。
public class AnonymousThreadExample {public static void main(String[] args) {Thread thread1 = new Thread(new Runnable() {public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}}});thread1.start();} } -
使用
ExecutorService框架:使用
ExecutorService框架可以更方便地管理和执行线程。import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class ExecutorServiceExample {public static void main(String[] args) {ExecutorService executorService = Executors.newFixedThreadPool(2);Runnable myRunnable = new Runnable() {public void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + ": " + i);}}};executorService.submit(myRunnable);executorService.submit(myRunnable);executorService.shutdown();} }
以上是几种常见的创建线程的方式,选择哪种方式取决于具体的需求和设计。通常情况下,推荐使用实现 Runnable 接口的方式,因为它更灵活,可以避免 Java 单继承的限制。