@Callable
use ExecutorService submit()import java.util.concurrent.*;
public class Test0012 {
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();
System.out.println("1 create future");
Future submit = newCachedThreadPool.submit(new TaskCallable());
System.out.println("2 do submit");
// Thread.sleep(3000);
System.out.println("3 do get");
//这个应该是会被阻塞,获取到结果时才继续执行
String s = submit.get();
System.out.println("4 get result");
System.out.println(s);
}
}
class TaskCallable implements Callable{
@Override
public String call() throws Exception {
System.out.println("1 call begin");
Thread.sleep(5000);
System.out.println("2 call end");
return "call back";
}
}
result
D:ProgramJavajdk1.8.0_91binjava.exe -Dfile.encoding=UTF-8 "-javaagent:D:ProgramIntelliJ IDEA 2020.3.3libidea_rt.jar=57031:D:ProgramIntelliJ IDEA 2020.3.3bin" -classpath "D:BaiduNetdiskDownload 3 java架构师 006-(每特教育&每特学院&蚂蚁课堂)-3期-并发编程专题-Callable与Future模式备课代码thread_demo007_testbin;D:ProgramJavajdk1.8.0_91jrelibcharsets.jar;D:ProgramJavajdk1.8.0_91jrelibdeploy.jar;D:ProgramJavajdk1.8.0_91jrelibextaccess-bridge-64.jar;D:ProgramJavajdk1.8.0_91jrelibextcldrdata.jar;D:ProgramJavajdk1.8.0_91jrelibextdnsns.jar;D:ProgramJavajdk1.8.0_91jrelibextjaccess.jar;D:ProgramJavajdk1.8.0_91jrelibextjfxrt.jar;D:ProgramJavajdk1.8.0_91jrelibextlocaledata.jar;D:ProgramJavajdk1.8.0_91jrelibextnashorn.jar;D:ProgramJavajdk1.8.0_91jrelibextsunec.jar;D:ProgramJavajdk1.8.0_91jrelibextsunjce_provider.jar;D:ProgramJavajdk1.8.0_91jrelibextsunmscapi.jar;D:ProgramJavajdk1.8.0_91jrelibextsunpkcs11.jar;D:ProgramJavajdk1.8.0_91jrelibextzipfs.jar;D:ProgramJavajdk1.8.0_91jrelibjavaws.jar;D:ProgramJavajdk1.8.0_91jrelibjce.jar;D:ProgramJavajdk1.8.0_91jrelibjfr.jar;D:ProgramJavajdk1.8.0_91jrelibjfxswt.jar;D:ProgramJavajdk1.8.0_91jrelibjsse.jar;D:ProgramJavajdk1.8.0_91jrelibmanagement-agent.jar;D:ProgramJavajdk1.8.0_91jrelibplugin.jar;D:ProgramJavajdk1.8.0_91jrelibresources.jar;D:ProgramJavajdk1.8.0_91jrelibrt.jar" com.itmayiedu.Test0012 1 create future 2 do submit 3 do get 1 call begin 2 call end 4 get result call back Process finished with exit code 0



