实现多线程的另一种方式-Callable
package com.mldn.thread; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class TestMyCallable { public static void main(String[] args) throws InterruptedException, ExecutionException { /*构造方法摘要 FutureTask(Callable<V> callable): 创建一个 FutureTask,一旦运行就执行给定的 Callable。 */ FutureTask task = new FutureTask(new MyCallable()); /* * class FutureTask implements RunnableFuture * interface RunnableFuture extends Runnable,Future * 说明:FutureTask也是Runnable的子类 */ //这里的task可以当作Runnable对象 new Thread(task).start();//启动线程 System.out.println(task.get());//返回结果 } } /*------------------------自定义类MyCallable---------------------------*/ package com.thread; import java.util.concurrent.Callable; /* * 自定义类实现Callable接口 * Runnable和Callable的区别: * Runnable执行完线程程序后没有返回结果(重写run方法) * Callable执行完线程程序后有返回结果 (重写call方法) */ public class MyCallable implements Callable<String> { @Override public String call() throws Exception { for(int i=10;i>0;i--){ System.out.println(i); } return "票卖完了,下次吧。。。";//有返回结果 } }