7-1 2种不同方式创建线程
时间: 2024-11-20 09:39:30 浏览: 11
在Java中,有多种方式可以创建线程,以下是七种常见的方法:
1. **继承Thread类**: 创建一个类并从Thread类继承,然后覆盖run()方法,通过实例化这个子类来启动线程。
```java
class MyThread extends Thread {
public void run() {
// 线程执行的代码
}
}
MyThread thread = new MyThread();
thread.start();
```
2. **实现Runnable接口**: 定义一个实现了Runnable接口的类,并提供run()方法,然后将它作为Thread构造函数的参数创建Thread对象。
```java
class MyRunnable implements Runnable {
public void run() {
// 线程执行的代码
}
}
Thread thread = new Thread(new MyRunnable());
thread.start();
```
3. **使用Executor框架**: 使用Executors工厂方法创建线程池,提交Runnable任务。
```java
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.execute(() -> { /* 线程代码 */ });
```
4. **Callable接口**: 类似于Runnable,但是返回值可用,配合Future和Executor。
```java
Callable<Integer> callable = () -> { /* 线程计算结果 */ };
Future<Integer> future = executor.submit(callable);
try {
Integer result = future.get(); // 获取计算结果
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
```
5. **匿名内部类**: 直接在需要的地方创建一个实现了Runnable或Callable的匿名类。
```java
executor.execute(() -> {
// 线程代码
});
```
6. **静态工厂方法**:一些框架或库可能会提供静态工厂方法直接创建线程。
```java
ThreadFactory factory = Executors.defaultThreadFactory();
Thread thread = factory.newThread(() -> { /* 线程代码 */ });
```
7. **自定义Thread.UncaughtExceptionHandler**: 当线程抛出未捕获异常时,注册一个处理器来处理异常。
```java
Thread thread = new Thread(() -> {
throw new RuntimeException("Uncaught exception");
});
thread.setUncaughtExceptionHandler(e -> {/* 处理异常 */});
thread.start();
```
阅读全文