在Java中,创建线程有两种主要方法:
下面是这两种方法的示例:
方法1:继承Thread类
// 创建一个名为MyThread的类,该类继承自Thread类
class MyThread extends Thread {
@Override
public void run() {
// 在这里编写你的线程代码
System.out.println("线程正在运行...");
}
}
public class Main {
public static void main(String[] args) {
// 创建MyThread对象
MyThread myThread = new MyThread();
// 启动线程
myThread.start();
}
}
方法2:实现Runnable接口
// 创建一个名为MyRunnable的类,该类实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
// 在这里编写你的线程代码
System.out.println("线程正在运行...");
}
}
public class Main {
public static void main(String[] args) {
// 创建MyRunnable对象
MyRunnable myRunnable = new MyRunnable();
// 创建Thread对象并将MyRunnable对象作为参数传递
Thread thread = new Thread(myRunnable);
// 启动线程
thread.start();
}
}
另外,你还可以使用Java的ExecutorService
和Callable
接口来更高级地管理线程。这里是一个使用ExecutorService
的示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
// 创建一个固定大小的线程池
ExecutorService executorService = Executors.newFixedThreadPool(2);
// 提交任务到线程池
executorService.submit(new MyRunnable());
executorService.submit(new MyRunnable());
// 关闭线程池
executorService.shutdown();
}
}
这里是一个使用Callable
接口的示例:
import java.util.concurrent.*;
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
// 在这里编写你的线程代码
return "线程执行完成";
}
}
public class Main {
public static void main(String[] args) {
// 创建一个单线程的执行器
ExecutorService executorService = Executors.newSingleThreadExecutor();
// 提交任务到执行器并获取Future对象
Future<String> future = executorService.submit(new MyCallable());
try {
// 获取任务执行结果
String result = future.get();
System.out.println("线程执行结果: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
// 关闭执行器
executorService.shutdown();
}
}