1.callable
1.实现callable接口。
2.实现call方法,实现业务。call方法有返回值。
3.创建callable实现类的对象。
4.将callable接口实现类的对象传到FutureTask类的构造函数中,创建FutureTask的对象。
5.将FutureTask的对象作为参数传递到Thread类的构造器中,创建Thread对象,并调用start方法启动(通过FutureTask的对象调用方法get获取线程中的call的返回值)。
package com.dadudu.tread;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
class NumThread implements Callable {
private int sum = 0;//
//可以抛出异常
@Override
public Object call() throws Exception {
for (int i = 0; i <= 100; i++) {
if (i % 2 == 0) {
System.out.println(Thread.currentThread().getName() + ":" + i);
sum += i;
}
}
return sum;
}
}
class ThreadNew {
public static void main(String[] args) {
//new一个实现callable接口的对象
NumThread numThread = new NumThread();
//通过futureTask对象的get方法来接收futureTask的值
FutureTask futureTask = new FutureTask(numThread);
Thread t1 = new Thread(futureTask);
t1.setName("线程小八嘎");
t1.start();
try {
Object sum = futureTask.get();
System.out.println(Thread.currentThread().getName() + ":" + sum);
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}