Callable接口
Callable的用法
Callable是一个 interface .相当于把线程封装了一个 “返回值”.方便程序员借助多线程的方式计算结果.
1.创建线程计算 1 + 2 + 3 + … + 1000,不使用 Callable版本
创建一个类 Result ,包含一个 sum表示最终结果, lock表示线程同步使用的锁对象.
main方法中先创建 Result实例,然后创建一个线程 t.在线程内部计算 1 + 2 + 3 + … + 1000.
主线程同时使用 wait等待线程 t计算结束. (注意,如果执行到 wait之前,线程 t已经计算完了,就不必等待了).
当线程 t计算完毕后,通过 notify唤醒主线程,主线程再打印结果.
static class Result {
public int sum = 0;
public Object lock = new Object();
}
public static void main(String[] args) throws InterruptedException {
Result result = new Result();
Thread t = new Thread() {
@Override
public void run() {
int sum = 0;
for (int i = 1; i <= 1000; i++) {
sum += i;
}
synchronized (result.lock) {
result.sum = sum;
result.lock.notify();