Init.Sun Chengdu.Sichuan

java多线程笔记

2018-06-16
Init

java多线程笔记02 - Callable

Callable异步执行代码

package 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异步原理简析


Similar Posts

Comments