以下是使用Java ThreadPoolExecutor创建5个线程池,每个线程池平均分配list里面的数据,GeoResults<RedisGeoCommands.GeoLocation>大小有500条的示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含500个元素的list
        List<GeoResults<RedisGeoCommands.GeoLocation<String>>> list = new ArrayList<>();
        for (int i = 0; i < 500; i++) {
            list.add(new GeoResults<RedisGeoCommands.GeoLocation<String>>());
        }

        // 创建5个线程池
        int poolSize = 5;
        ThreadPoolExecutor[] pools = new ThreadPoolExecutor[poolSize];
        for (int i = 0; i < poolSize; i++) {
            pools[i] = new ThreadPoolExecutor(1, 1, 0, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>());
        }

        // 平均分配list里面的数据到5个线程池
        int index = 0;
        for (GeoResults<RedisGeoCommands.GeoLocation<String>> data : list) {
            ThreadPoolExecutor pool = pools[index % poolSize];
            pool.execute(() -> {
                // 处理数据
                // ...
            });
            index++;
        }

        // 关闭线程池
        for (ThreadPoolExecutor pool : pools) {
            pool.shutdown();
        }
    }
}

在上面的示例代码中,我们先创建了一个包含500个元素的list,然后创建了5个线程池。接着,我们使用一个循环遍历list里面的数据,并将数据平均分配到5个线程池中。最后,我们关闭了所有的线程池。在处理数据的代码中,你可以根据具体需求来编写逻辑。

java ThreadPoolExecutor 创建5个线程池每个线GeoResultsRedisGeoCommandsGeoLocationString程池平均分配list里面的数据GeoResultsRedisGeoCommandsGeoLocationString大小有500条

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

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