Callable 和 Runnable 的区别】的更多相关文章

Callable 和 Runnable 的使用方法大同小异, 区别在于: 1.Callable 使用 call() 方法, Runnable 使用 run() 方法 2.call() 可以返回值, 而 run()方法不能返回. 3.call() 可以抛出受检查的异常,比如ClassNotFoundException, 而run()不能抛出受检查的异常. 注意ExecutorService 在Callable中使用的是submit(), 在Runnable中使用的是 execute()…
一.区别总结: Callable定义的方法是call,而Runnable定义的方法是run. Callable的call方法可以有返回值,而Runnable的run方法不能有返回值,这是核心区别. Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常. 二.返回值的区别 他们的核心区别是Callable可以返回Feature的对象,这个对象可以了解线程的运行情况,设置可以关闭线程! 三.Runnable代码事例 package com.qunar.synchro;…
Runnable接口源码 @FunctionalInterface public interface Runnable { /** * When an object implementing interface <code>Runnable</code> is used * to create a thread, starting the thread causes the object's * <code>run</code> method to be c…
一. java中实现线程的方式有Thread和Runnable Thread: public class Thread1 extends Thread{ @Override public void run() { System.out.println("extend thread"); } } Runnable: public class ThreadRunable implements Runnable{ public void run() { System.out.println(…
http://www.cnblogs.com/dolphin0520/p/3949310.html 一.Callable与Runnable 二.Future 三.FutureTask 四.使用示例 一.Callable与Runnable 先说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法: 1 2 3 public interface Runnable {     public abstract void run(); } 由于run()方法返回值为…
Thread与Runnable的区别(用三个窗口同时出售10张车票为例子) 运行代码 运行结果 分析 System.out.println("开始测试多线程");class MyThread extends Thread { private int ticket=10; private String name; public MyThread(String name){ this.name=name; } @Override public void run() { for (int i…
线程使用比较广泛,但实际上一般项目很少用上线程,线程常用于优化复杂的程序执行流程,把一些与业务关系关系不大但是必须要执行的流程使用线程的方式让子线程去执行,主流程只返回跟业务有关的信息 runnable是无返回值的执行线程:callable是有返回值的执行线程 实现runable接口的实现类通常使用execute来开启线程池中的线程来执行任务,但是也支持submit来开启原则上不会报错,因为实现类返回结果就是void 实现callable接口的实现类只能用submit来开启线程池中的线程来执行任…
编写多线程程序一般有三种方法,Thread,Runnable,Callable. Runnable和Callable的区别是: (1)Callable规定的方法是call(),Runnable规定的方法是run().其中Runnable可以提交给Thread来包装下,直接启动一个线程来执行,而Callable则一般都是提交给ExecuteService来执行. (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法不可以 (…
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口: Thread类是在java.lang包中定义 的.一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了, 但是一个类只能继承一个父类,这是此方法的局限. 但是,此时结果很有规律,先第一个对象执行,然后第二个对象执行,并没有相互运行.在JDK的文档中可以发现,一旦调用start()方法,则会通过JVM找到run()方法.下面启动start()方法启动线程: 这样程序可以正…
今天碰到一个需要获取线程返回结果的业务场景,所以了解到了Callable接口. 先来看下下面这个例子: public class ThreadTest { public static void main(String[] args) throws Exception { ExecutorService exc = Executors.newCachedThreadPool(); try { String result = null; FutureTask<String> task = (Fut…