21xrx.com
2024-09-19 09:52:50 Thursday
登录
文章检索 我的文章 写文章
Java线程池的使用实例
2023-06-15 11:21:56 深夜i     --     --

最近在学习Java多线程编程,想要了解一下线程池的使用方法。今天,我就来分享一下我写的一个Java线程池使用实例。

首先,我先给出三个关键词:

1. ThreadPoolExecutor

2. Callable

3. Future

接下来,让我们看一下线程池的代码实现:


import java.util.concurrent.*;

public class ThreadPoolDemo {

  public static void main(String[] args) {

    int corePoolSize = 5;

    int maxPoolSize = 10;

    long keepAliveTime = 5000;

    TimeUnit unit = TimeUnit.MILLISECONDS;

    BlockingQueue workQueue = new ArrayBlockingQueue<>(100);

    ExecutorService executorService = new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, unit, workQueue);

    Callable task = () -> {

      System.out.println("Task running in thread " + Thread.currentThread().getName());

      return "Task complete";

    };

    Future future = executorService.submit(task);

    try {

      System.out.println("Result: " + future.get());

    } catch (InterruptedException | ExecutionException e) {

      e.printStackTrace();

    }

    executorService.shutdown();

  }

}

在这个例子中,我们首先设置了线程池的核心线程数和最大线程数,以及线程的存活时间。然后,我们定义了一个Callable任务,任务返回的是一个字符串。我们使用ThreadPoolExecutor的submit方法执行任务,并将任务的返回值封装到Future对象中。在这里,我们使用了Future的get方法来阻塞等待任务执行完成并获取任务执行结果。

最后,我们记得一定要调用线程池的shutdown方法,释放资源。

以上就是Java线程池的使用实例,希望对大家有所帮助。如果您也在学习Java多线程编程,可以尝试实现一下这个例子哦!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复