获取多线程的方式-Callable

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

/**
 * 2022/6/30 4:26 下午
 * 获取多线程的方式
 */
class TestService implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        System.out.println("********come in callable");
        return 1024;
    }

}

class CallableDemo {

    public static void main(String[] args) throws ExecutionException, InterruptedException {

        FutureTask<Integer> futureTask = new FutureTask<>(new TestService());

        new Thread(futureTask, "AA").start();
        //不会执行call方法,会直接复用,如果要调用,需要重新new FutureTask
//        new Thread(futureTask, "BB").start();

        int aa = 100;
        while (!futureTask.isDone()){
            //还没执行完、等待
        }
        //建议放后面获取,以免线程堵塞
        int bb = futureTask.get();

        System.out.println("*****result" + (aa+bb));
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容