Java多线程的三种创建方法之实现Callable接口
- 实现Callable接口,需要返回值类型
- 重写call方法,需要抛出异常
- 创建目标对象
- 创建执行服务:ExecutorService ser = Executors.newFixedThreadPool(1);
- 提交执行:Future result1 = ser.submit(t1);
- 获取结果:boolean r1 = result1.get()
- 关闭服务:ser.shutdownNow();
package Thread;
import java.util.concurrent.*;
public class Demo05 implements Callable {
@Override
public String call() throws Exception {
Thread.sleep(3000);
return "result string";
}
public static void main(String[] args) throws ExecutionException, InterruptedException {
Demo05 demo05 = new Demo05();
//创建线程池
ExecutorService service = Executors.newFixedThreadPool(1);
//提交任务
Future result = service.submit(demo05);
//get方法阻塞主线程,要获取到结果才会继续执行
System.out.println(result.get());
System.out.println("主线程获得了结果");
//关闭服务
service.shutdownNow();
}
}
//运行结果
result string
主线程获得了结果