方式三:实现Callable接口
Callable 接口类似于 Runnable,两者都是为那些其实例能被另一个线程执行的类设计的。但是 Runnable 不会回结果,并且无法抛出经过检查的异常。
class Thread implements Callable<>{
@Override
public Object call() throws Exception {
return null;
}
}
Callable 需要依赖FutureTask , FutureTask 也可以用作锁。
实例:
ThreadTest th = new ThreadTest()
//执行Callable接口,需要FutureTask 实现类的支持,用于接收运算结果
FutureTask<Integer> ift = new FutureTask<>(th);
new Thread(ift).start()
try {
Integer integer = ift.get()
System.out.println(integer);
} catch (Exception e) {
e.printStackTrace();
}
class ThreadTest implements Callable<Integer>{
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 0; i < 100; i++) {
sum += i;
System.out.println(i);
}
return sum;
}
}