java如何创建线程
创建线程的方法
在Java中,创建线程主要有两种方式:继承Thread类和实现Runnable接口。以下是具体实现方法:
继承Thread类
通过继承Thread类并重写run()方法可以创建线程。启动线程时调用start()方法,JVM会自动调用run()方法。
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread running by extending Thread class");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
实现Runnable接口
实现Runnable接口并实现run()方法,然后将Runnable实例传递给Thread类的构造函数。这种方式更灵活,因为Java不支持多重继承。
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Thread running by implementing Runnable interface");
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
使用Lambda表达式(Java 8+)
对于简单的任务,可以使用Lambda表达式简化Runnable接口的实现。
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println("Thread running using Lambda expression");
});
thread.start();
}
}
实现Callable接口(带返回值)
如果需要线程返回结果,可以实现Callable接口,并通过FutureTask获取返回值。
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "Thread running with Callable and returning value";
}
}
public class Main {
public static void main(String[] args) throws Exception {
FutureTask<String> futureTask = new FutureTask<>(new MyCallable());
Thread thread = new Thread(futureTask);
thread.start();
System.out.println(futureTask.get());
}
}
线程池(ExecutorService)
对于大量线程任务,推荐使用线程池管理线程资源。
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
executor.execute(() -> {
System.out.println("Thread running via ExecutorService");
});
executor.shutdown();
}
}
注意事项
- 直接调用
run()方法不会启动新线程,仅作为普通方法执行。 - 避免直接继承
Thread类,优先选择实现Runnable或Callable接口。 - 线程池能有效管理资源,适合高并发场景。






