之前我们讲解了Java实现多线程的两种方式:
- 继承Thread类
- 实现Runnable接口
那么我们今天来看一下如何使用实现Callable接口的方式实现多线程
代码:
package wewi;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
/**
* @author LFDMW
* @date 2020-11-25 22:23
*/
public class CallAbleTest implements Callable {
int num = 0;
@Override
public Object call() throws Exception {
while (true) {
if (num >= 1000) {
break;
} else {
show();
}
}
return null;
}
public void show() {
if (num < 1000) {
System.out.println(num);
num++;
}
}
}
class Test {
public static void main(String[] args) {
CallAbleTest ableTest = new CallAbleTest();
FutureTask<Object> objectFutureTask = new FutureTask<Object>(ableTest);
Thread thread = new Thread(objectFutureTask);
thread.start();
Thread thread1 = new Thread(objectFutureTask);
thread1.start();
}
}
具体步骤为:
- 实现Callable接口
- 重写call方法
- 创建实现了接口的对象
- 创建FutureTask对象并将 3 步骤的对象传入(可以接收返回值,具体后续章节中讲解)
- 创建Thread将 4 对象传入
// TODO: 后续章节中讲解FutureTask接收返回值等源码细节