Callable创建多线程(jdk5.0新增)

时间:2024-4-7    作者:老大夫    分类:


Callable同Runnable一样是个接口,实现该接口并实现call方法,将同步代码放入call方法中

使用它的好处是可以在方法抛出异常,无需再方法内部处理了,否则try catch太多

它还可以有返回值类型,无需返回就返回一个null

Callable Runnable
灵活,使用throws处理异常
可以有返回值
使用了泛型,可以指定call()的返回值
主线程如果需要获取call()的返回值,此时主线程是阻塞状态

例子

public class CallableTest {
    public static void main(String[] args) {
        //创建实现类对象
        NumberThread numberThread = new NumberThread();
        //创建futureTask传送进去实现类对象
        FutureTask futureTask = new FutureTask<>(numberThread);
        //run执行
        futureTask.run();
        System.out.println(numberThread.getTotal());
    }
}

//实现Callable
class NumberThread implements Callable{
    int total=0;
    //重写call()方法
    @Override
    public Object call() throws Exception {
        for (int i = 0; i < 100; i++) {
            if(i%2==0){
                System.out.println(i);
                total+=i;
            }
        }
        return total;
    }
    public int getTotal(){
        return total;
    }
}


扫描二维码,在手机上阅读

推荐阅读: