1. /**
    2. * 创建人:LYY
    3. * 创建时间:2022/4/28
    4. * 多线程创建方式三:
    5. * 1. 实现Callable接口
    6. * 2. 重写call方法
    7. * 3. 调用时创建future 将callable接口对象传递给构造器
    8. * 4 创建新线程(Thread) 将future对象传递给构造器
    9. * 5 启动线程方法
    10. * 6 future对象.get()方法获取callable接口call方法返回值
    11. */
    12. public class CallableThree implements Callable {
    13. @Override
    14. public Object call() throws Exception {
    15. int sum = 0;
    16. for (int i = 0; i < 100; i++) {
    17. sum += i;
    18. }
    19. return sum;
    20. }
    21. }
    22. class CallableThreeTest{
    23. public static void main(String[] args) {
    24. // 创建callable接口实现类对象
    25. CallableThree callableThree = new CallableThree();
    26. // 创建future接口类实现对象 将callable接口对象传递过去
    27. FutureTask futureTask = new FutureTask(callableThree);
    28. // 创建新线程 并执行
    29. Thread thread = new Thread(futureTask);
    30. thread.start();
    31. // 获取callable线程方法中的返回值
    32. try {
    33. int sum = (int) futureTask.get();
    34. System.out.println("1-100之和=" + sum);
    35. } catch (InterruptedException e) {
    36. e.printStackTrace();
    37. } catch (ExecutionException e) {
    38. e.printStackTrace();
    39. }
    40. }
    41. }