您的位置:首页 > 其它

Runnable , Callable 区别

2017-04-22 13:38 99 查看
编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.

Runnable和Callable的区别是,

(1)Callable规定的方法是call(),Runnable规定的方法是run().

(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得

(3)call方法可以抛出异常,run方法不可以

(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果。

package com.example.thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class RunableTest {

public static void main(String[] args) {
int taskSize = 3;
ExecutorService pool = Executors.newFixedThreadPool(taskSize);
Runnable run = new Runnable() {

@Override
public void run() {
for(int i=0; i<10; i++){
System.out.println(i);
}
}

};

//方法一:
//调用submit 会执行Runnable 的run方法
Future<?> f = pool.submit(run);

//无返回值

if(f.isDone()){//判断是否执行完毕
pool.shutdown();
}

//方法二:
new Thread(run).run();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程