创建线程的5种方法
1. 继承 Thread
类:
class MyThread extends Thread {
public void run() {
System.out.println("Thread is running");
}
}
public class ThreadExample {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
2. 实现 Runnable
接口:
class MyRunnable implements Runnable {
public void run() {
System.out.println("Runnable is running");
}
}
public class RunnableExample {
public static void main(String[] args) {
Thread myThread = new Thread(new MyRunnable());
myThread.start();
}
}
3. 使用匿名内部类:
Runnable myRunnable = new Runnable() {
public void run() {
System.out.println("Anonymous Runnable is running");
}
};
public class AnonymousRunnableExample {
public static void main(String[] args) {
Thread myThread = new Thread(myRunnable);
myThread.start();
}
}
4. 使用 Callable
和 Future
:
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyCallable implements Callable<String> {
public String call() {
return "Callable is running";
}
}
public class CallableExample {
public static void main(String[] args) throws Exception {
FutureTask<String> futureTask = new FutureTask<>(new MyCallable());
Thread myThread = new Thread(futureTask);
myThread.start();
String result = futureTask.get();
System.out.println(result);
}
}
5. 使用线程池:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
class MyTask implements Runnable {
public void run() {
System.out.println("Task is running");
}
}
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
executorService.submit(new MyTask());
executorService.shutdown();
}
}