美文网首页java基础知识
多线程创建的三种方式之实现Callable接口

多线程创建的三种方式之实现Callable接口

作者: 程序员三千_ | 来源:发表于2019-02-20 10:57 被阅读41次

    实现Callable接口创建线程

    Callable接口是在jdk5版本中加入的,这个接口在java.util.concurrent包下面,与其他两种方式不同的地方在于使用Callable接口创建的线程会获得一个返回值并且可以声明异常。

    使用Callable创建线程步骤:

    1.自定义一个类实现java.util.concurrent包下的Callable接口

    2.重写call方法

    3.将要在线程中执行的代码编写在call方法中

    4.创建ExecutorService线程池

    5.将自定义类的对象放入线程池里面

    6.获取线程的返回结果

    7.关闭线程池,不再接收新的线程,未执行完的线程不会被关闭

    线程池

    线程池是初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时直接去这个线程集合中获取,而不是创建一个线程。任务执行结束后,线程回到池子中等待下一次的分配。

    线程池的作用

    解决创建单个线程耗费时间和资源的问题。

    创建线程池

    上面代码中演示了两种方式创建线程池

    Executors.newFixedThreadPool(int nThreads);

    通过传入的int类型参数来指定创建线程池中的线程数,如果任务数量大于线程数量,则任务会进行等待。

    Executors.newCachedThreadPool();

    会根据需要创建新线程的线程池,如果线程池中的线程数量小于任务数时,会创建新的线程,线程池中的线程最大数量是Integer.MAX_VALUE,int类型的最大值。如果线程的处理速度小于任务的提交速度时,会不断创建新的线程来执行任务,这样有可能会因为创建过多线程而耗尽CPU 和内存资源。

    相关文章

      网友评论

        本文标题:多线程创建的三种方式之实现Callable接口

        本文链接:https://www.haomeiwen.com/subject/rtmcyqtx.html