多线程—java中的多线程,使用固定数量的线程处理多个任务

wkyowqbh  于 2021-07-09  发布在  Java
关注(0)|答案(2)|浏览(624)

我只是想学习更多关于线程的知识。我试图创建一个应用程序,可以处理10000个任务(例如消息)使用10线程。
以前我试图为每个任务创建一个线程,但它给出了“内存不足”的异常。
有谁能告诉我怎样才能做到这一点吗?使用10个线程处理10000条消息,并避免任何“内存不足”异常?
抱歉,我没有可用的演示代码,所以我不能上传示例代码

q35jwt9p

q35jwt9p1#

试试这个。如果你想返回值,你可以使用future对象。如果你使用的是低于8的java版本。那么使用可调用匿名类而不是lambda表达式

public static void main(String[] args){

    ExecutorService executorService = Executors.newFixedThreadPool(10);
    Future<Integer> future = null;
    try {
        for (int i = 0; i < 10000 ; i++) {
            int counter = i;
            try {
                future = executorService.submit(() -> {
                    System.out.println("hello i am process :"+counter +";Thread Id "+Thread.currentThread().getId());
                    return 1;
                });
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    } finally {
        executorService.shutdown();
    }
    try {
        executorService.awaitTermination(1, TimeUnit.HOURS);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}
zsohkypk

zsohkypk2#

使用由10个线程组成的固定线程池,通过调用

ExecutorService pool = ExecutoService.newFixedThreadPool(10);

然后通过调用运行线程(10000次) execute 在游泳池里

pool.execute(new Runnable() {

     public void run() { //do stuff }
})

相关问题