Callable

callable拥有返回值得runnable,可以通过FutureTask来进行包装

public class CallableDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        MyCallable myCallable = new MyCallable();
        FutureTask task = new FutureTask(myCallable);
<pre><code>    new Thread(task).start();
    new Thread(task).start();
    System.out.println(task.get());
    System.out.println(task.get());
    System.out.println("你好牙科的炬华科技爱好");

}

}

class MyCallable implements Callable<String> { private int k = 0; @Override public String call() throws Exception { return ++k + ""; } }

同一个task 经过不同线程start只会调用一次call方法

具体后续CAS原理在解释