Java中的Runnable和Callable都是用于实现多线程编程的接口,它们之间有一些关键的区别:
返回值:
异常处理:
实现方式:
使用场景:
下面是一个简单的示例,展示了如何使用Runnable和Callable接口:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class RunnableVsCallable {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 使用Runnable接口
ExecutorService executorService = Executors.newSingleThreadExecutor();
Runnable runnable = () -> {
System.out.println("Runnable task is running");
};
executorService.submit(runnable);
executorService.shutdown();
// 使用Callable接口
Callable<Integer> callable = () -> {
System.out.println("Callable task is running");
return 42;
};
Future<Integer> future = executorService.submit(callable);
Integer result = future.get(); // 获取线程执行结果
System.out.println("Callable task result: " + result);
executorService.shutdown();
}
}
在这个示例中,我们分别使用Runnable和Callable接口创建了两个任务,并将它们提交给线程池执行。通过Future对象,我们可以获取Callable任务的执行结果。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。