编写使用Callable接口重写call()方法,方法体为输出5遍“Thread.currentThread().getName() +“的call()方法在运行"”,循环结束后返回线程的名字。
时间: 2024-03-10 22:50:05 浏览: 15
好的,这是一个使用Callable接口重写call()方法的示例代码,它会输出5遍“Thread.currentThread().getName() +“的call()方法在运行"”,循环结束后返回线程的名字。
```java
import java.util.concurrent.Callable;
public class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + "的call()方法在运行");
}
return Thread.currentThread().getName();
}
}
```
在这个示例中,我们首先实现了Callable接口,并重写了它的call()方法。在call()方法中,我们使用for循环输出5遍“Thread.currentThread().getName() +“的call()方法在运行"”,然后返回当前线程的名字。
您可以通过创建MyCallable对象并使用ExecutorService来执行它,例如:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class Main {
public static void main(String[] args) throws Exception {
ExecutorService executorService = Executors.newSingleThreadExecutor();
MyCallable myCallable = new MyCallable();
Future<String> future = executorService.submit(myCallable);
String result = future.get();
System.out.println("线程返回的结果是:" + result);
executorService.shutdown();
}
}
```
在这个示例中,我们首先创建了一个ExecutorService对象,并使用newSingleThreadExecutor()方法创建了一个单个线程的线程池。然后,我们创建了一个MyCallable对象,并使用submit()方法将它提交给线程池来执行。submit()方法返回一个Future对象,我们可以使用get()方法获取线程的返回值。最后,我们输出线程返回的结果,并关闭线程池。