java多线程笔记

java多线程笔记02 - Callable

Callable异步执行代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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异步原理简析