线程池,其实就是一个容纳很多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多的资源。
    注意:线程池中的线程运行结束不会被销毁,而是返回线程池等待下次被调用
    线程池是jsk5.0版本推出

    ExecutorServervice线程池类
    线程池赋值给线程声明周期,我们只需要向线程池中提交执行目标,线程池会自动分配线程,执行对应的操作(任务逻辑)

    方法:
    F<?> n submit(Runnable task):接收一个Runnable接口实现类,执行线程的目标

    image.png

    创建线程:一种是Thread,一种是Runnable,另外一种是线程池。(三种方式)。都无法得到返回值。
    image.png

    java中提供了一个接口Callable

    callable与Runnable区别
    1、如果需要完成并且获得结果,就使用call方法,注意:不能使用callable创建线程,只能使用Runnable创建线程
    2、call方法会抛出异常,run没有异常
    3、为实现Callable接口,必须重写call方法

    image.png

    向线程提交任务:
    1、Futrue<?> submit(Callable task):接收的是一个callable接口实现类
    Futrue:返回任务的结果
    V get():返回的一个call结果

    image.png