Adapter
栗子
life
- 中美插座标准不同,需要适配器去转接
- 我的小米8没有耳机插孔,需要转接线
多线程
问题
- 我有一个Task继承自Callable
- 我的Thread的构造方法需要一个Runnable
解决方法
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46import java.util.concurrent.Callable;
public class LeetCode {
public static void main(String[] args) {
Callable<Long> callable = new Task(123450000L);
Thread thread = new Thread(new RunnableAdapter(callable));
thread.start();
}
}
class RunnableAdapter implements Runnable {
private Callable<?> callable;
RunnableAdapter(Callable<?> callable) {
this.callable = callable;
}
public void run() {
try {
callable.call();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
class Task implements Callable<Long> {
private long num;
public Task(long num) {
this.num = num;
}
public Long call() throws Exception {
long sum = 0;
for (long i = 0; i < num; i++) {
sum += i;
}
System.out.println("result:" + sum);
return sum;
}
}- 整一个RunnableAdapter
- 它的构造方法接受一个Callable
- 它的run方法内部运行Callable的call方法