I haven't looked at C # For a long time since I switched to Java in the project, but to be honest, I am in Cao camp. I have long known that. NET4.5 has added async and await, but it has never been used. Today I have seen this article to understand it. I suddenly found that Task is not the concept of Future in Java? The C # code in Jesse Liu's article: static void Main (string [] args) {Console. writeLine ("Main Thread Id: {0} \ r \ n", Thread. currentThread. managedThreadId); Test (); Console. readLine ();} static async Task Test () {Console. writeLine ("Before calling GetName, Thread Id: {0} \ r \ n", Thread. currentThread. managedThreadId); var name = GetName (); Console. writeLine ("End calling GetName. \ r \ n "); Console. writeLine ("Get resul T from GetName: {0} ", await name);} static async Task GetName () {// here is the main thread Console. writeLine ("Before calling Task. run, current thread Id is: {0} ", Thread. currentThread. managedThreadId); return await Task. run () => {Thread. sleep (1, 5000); Console. writeLine ("'getname' Thread Id: {0}", Thread. currentThread. managedThreadId); return "zhanjindong";}) ;}check whether the Java code "equivalent" is "identical "? Static ExecutorService service = Executors. newFixedThreadPool (10);/*** @ param args * @ throws ExecutionException * @ throws InterruptedException */public static void main (String [] args) throws InterruptedException, ExecutionException {System. out. println ("Main Thread Id:" + Thread. currentThread (). getId (); test ();} static void test () throws InterruptedException, ExecutionException {System. out. println ("Before calling getName, Thread Id:" + Thread. currentThread (). getId (); Future name = getName (); System. out. println ("End calling getName. "); System. out. println ("Get result from getName:" + name. get ();} static Future getName () {System. out. println ("Before calling ExecutorService. submit, current thread Id is: "+ Thread. currentThread (). getId (); return service. submit (new Callable () {@ Override public String call () throws Exception {Thread. sleep (1, 5000); System. out. println ("'getname' Thread Id:" + Thread. currentThread (). getId (); return "zhanjindong ";}});}