2018-06-16 java java多线程笔记 java多线程笔记02 - Callable Callable异步执行代码1234567891011121314151617181920212223242526272829303132package com.cdinit;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;class MyThread implements Callable<String>{ @Override public String call() throws Exception { Thread.sleep(3000); System.out.println("call..."); return "子线程来了..."; }}public class CallableTest { public static void main(String[] arg) throws Exception{ // Callable接口的实现MyThread // FutureTask实现了RunnableFuture接口,RunnableFuture继承了Runnable // FutureTask 有接收Callable的构造方法 FutureTask<String> ft = new FutureTask<String>(new MyThread()); new Thread(ft,"T1").start(); new Thread(ft,"T2").start(); System.out.println(Thread.currentThread().getName()+"线程,主线程~~~"); String t1 = ft.get(); System.out.println("t1--->" + t1); String t2 = ft.get(); System.out.println("t2--->" + t2); }} 参考Callable异步原理简析 Newer Java并发:CountDownLatch、CyclicBarrier和 Semaphore Older java多线程笔记