现在的位置: 首页 > 综合 > 正文

Java Callable 和Runnable

2013年01月28日 ⁄ 综合 ⁄ 共 995字 ⁄ 字号 评论关闭

Java Callable 和Runnable 区别:
Callable可以返回值,可以跑出异常,Runnable启动线程的方法通常为start,而Callable需要使用ExecutorService submit 方法。
例子:
//: concurrency/CallableDemo.java
import java.util.concurrent.*;
import java.util.*;
class TaskWithResult implements Callable<String> {
    private int id;
    public TaskWithResult(int id) {
        this.id = id;
    }
    public String call() {
        return "result of TaskWithResult " + id;
    }
}
public class CallableDemo {
    public static void main(String[] args) {
        ExecutorService exec = Executors.newCachedThreadPool();
        ArrayList<Future<String>> results =new ArrayList<Future<String>>();
        for(int i = 0; i < 10; i++)
            results.add(exec.submit(new TaskWithResult(i)));
        for(Future<String> fs : results)
            try {
                // get() blocks until completion:
                System.out.println(fs.get());
            } catch(InterruptedException e) {
                System.out.println(e);
                return;
            } catch(ExecutionException e) {
                System.out.println(e);
            } finally {
                exec.shutdown();
            }
    }
}

【上篇】
【下篇】

抱歉!评论已关闭.