通过实现Callable接口开启一个分线程
第一步 创建一个类并实现Callable接口
第二步 重写call方法并返回数据
第三步 创建Callable实现类的对象
第四步 创建FutureTask对象,并将Callable实现类的对象作为参数传递到FutureTask的构造器中
第五步 创建Thread对象并将FutureTask对象作为参数传递Thread的构造器中
第六步 调用Thread的start方法
第七步 调用FutureTask中的get()方法获取返回值
public static void main(String[] args) throws Exception, Exception {
//第三步 创建Callable实现类的对象
MyCallble myCallble = new MyCallble();
//第四步 创建FutureTask对象,并将Callable实现类的对象作为参数传递到FutureTask的构造器中
FutureTask<String> futureTask = new FutureTask<>(myCallble);
//第五步 创建Thread对象并将FutureTask对象作为参数传递Thread的构造器中
Thread thread = new Thread(futureTask);
//第六步 调用Thread的start方法
thread.start();
//第七步 调用FutureTask中的get()方法获取返回值
String str = futureTask.get(); //get方法(阻塞式的)后的代码都是在分线程执行完毕后再开始执行的
System.out.println(str);
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
}
}
// 第一步 创建一个类并实现Callable接口
class MyCallble implements Callable<String>{
// 第二步 重写call方法并返回数据
@Override
public String call() throws Exception {
for (int i = 0; i < 50; i++) {
System.out.println(Thread.currentThread().getName() + " " + i);
}
return "aaa";
}
}