callable java
时间: 2023-09-05 18:10:59 浏览: 95
在Java中,Callable接口是一个泛型接口,它允许在一个线程中异步执行一段代码,并在执行完成后返回一个结果。该接口定义了一个call()方法,该方法可以返回一个指定类型的结果,或者抛出一个异常。与Runnable接口不同,Callable接口可以返回一个值,而Runnable接口则不能。
下面是一个例子,演示了如何使用Callable接口:
```java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableDemo {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newSingleThreadExecutor();
Callable<String> task = () -> {
Thread.sleep(2000);
return "Hello, World!";
};
Future<String> future = executor.submit(task);
System.out.println("Waiting for result...");
String result = future.get();
System.out.println("Result: " + result);
executor.shutdown();
}
}
```
在上面的例子中,我们创建了一个Callable对象,并将其提交给一个ExecutorService对象进行异步执行。我们使用Future对象来获取执行结果。在调用future.get()方法时,如果执行还没有完成,当前线程会被阻塞,直到执行完成并返回结果。在本例中,我们休眠了2秒,模拟了一个长时间执行的任务。最后,我们输出了执行结果,并关闭了ExecutorService。
阅读全文