在Java中,可以使用ExecutorService接口和Executors类来创建线程池。

  1. 使用Executors类的静态方法创建线程池:
// 创建一个固定大小的线程池,线程池中最多同时执行5个任务
ExecutorService executor = Executors.newFixedThreadPool(5);

// 创建一个单线程的线程池,只会同时执行一个任务
ExecutorService executor = Executors.newSingleThreadExecutor();

// 创建一个可根据需要创建新线程的线程池,线程池中最多可以同时执行Integer.MAX_VALUE个任务
ExecutorService executor = Executors.newCachedThreadPool();

// 创建一个固定大小的线程池,同时可以设置线程池中等待任务的队列大小
ExecutorService executor = Executors.newFixedThreadPool(5, new ArrayBlockingQueue<>(10));
  1. 使用ExecutorService接口的实现类ThreadPoolExecutor直接创建线程池:
// 创建一个固定大小的线程池,线程池中最多同时执行5个任务
ExecutorService executor = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());

// 创建一个单线程的线程池,只会同时执行一个任务
ExecutorService executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());

// 创建一个可根据需要创建新线程的线程池,线程池中最多可以同时执行Integer.MAX_VALUE个任务
ExecutorService executor = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>());

// 创建一个固定大小的线程池,同时可以设置线程池中等待任务的队列大小
ExecutorService executor = new ThreadPoolExecutor(5, 5, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10));
  1. 使用线程池执行任务:
// 提交一个任务给线程池执行
executor.execute(new Runnable() {
    @Override
    public void run() {
        // 任务的具体逻辑
    }
});

// 提交一个有返回值的任务给线程池执行
Future<String> future = executor.submit(new Callable<String>() {
    @Override
    public String call() throws Exception {
        // 任务的具体逻辑
        return "result";
    }
});

// 关闭线程池
executor.shutdown();

注意:在使用完线程池后,应该调用shutdown()方法来关闭线程池,否则线程池中的线程将一直保持活动状态

java创建线程池

原文地址: http://www.cveoy.top/t/topic/ieNG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录