Java创建线程,并能返回结果
时间: 2023-08-11 21:06:44 浏览: 102
创建线程,传递参数,取值返回
Java创建线程一般有两种方式:继承Thread类和实现Runnable接口。其中,实现Runnable接口的方式更为常用,具体步骤如下:
1. 定义一个实现Runnable接口的类,并重写run()方法,在run()方法中编写该线程需要执行的代码。
```java
public class MyRunnable implements Runnable {
public void run() {
// 线程执行的代码
}
}
```
2. 创建Runnable实现类的实例。
```java
MyRunnable myRunnable = new MyRunnable();
```
3. 创建Thread对象,并将Runnable实现类的实例作为参数传入。
```java
Thread thread = new Thread(myRunnable);
```
4. 启动线程。
```java
thread.start();
```
以上是创建线程的基本步骤,如果需要返回结果,可以使用Callable和Future接口来实现。具体步骤如下:
1. 定义一个实现Callable接口的类,并重写call()方法,在call()方法中编写该线程需要执行的代码,并返回结果。
```java
public class MyCallable implements Callable<String> {
public String call() throws Exception {
// 线程执行的代码
return "result";
}
}
```
2. 创建MyCallable实现类的实例。
```java
MyCallable myCallable = new MyCallable();
```
3. 创建FutureTask对象,并将MyCallable实现类的实例作为参数传入。
```java
FutureTask<String> futureTask = new FutureTask<>(myCallable);
```
4. 创建Thread对象,并将FutureTask对象作为参数传入。
```java
Thread thread = new Thread(futureTask);
```
5. 启动线程。
```java
thread.start();
```
6. 使用FutureTask对象的get()方法获取结果。
```java
String result = futureTask.get();
```
注意:get()方法会阻塞当前线程,直到任务执行完成并返回结果。因此,如果需要在后台执行任务并同时执行其他任务,可以将FutureTask对象传递给ExecutorService对象。
阅读全文