java 如何开启线程
开启线程的方法
在 Java 中开启线程可以通过多种方式实现,以下是几种常见的方法:
继承 Thread 类
通过继承 Thread 类并重写 run 方法,可以创建一个线程。调用 start 方法启动线程。
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread is running");
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
实现 Runnable 接口
实现 Runnable 接口并重写 run 方法,然后将 Runnable 实例传递给 Thread 构造函数。
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Thread is running");
}
}
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 is running");
});
thread.start();
}
}
使用 Callable 和 Future
如果需要线程返回结果,可以使用 Callable 和 Future。Callable 可以返回结果或抛出异常。
import java.util.concurrent.*;
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
return "Thread result";
}
}
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Future<String> future = executor.submit(new MyCallable());
System.out.println(future.get());
executor.shutdown();
}
}
使用线程池
通过线程池管理线程可以提高性能并避免频繁创建和销毁线程。
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 is running");
});
executor.shutdown();
}
}
注意事项
- 线程的启动必须调用
start方法,而不是直接调用run方法。run方法只是普通方法调用,不会启动新线程。 - 避免直接继承
Thread类,推荐实现Runnable或Callable接口,因为 Java 不支持多重继承。 - 使用线程池时,注意合理设置线程池大小,避免资源浪费或性能问题。







