欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

java 多线程 任务队列_Java并发编程线程池任务队列

发布时间:2025/3/20 java 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java 多线程 任务队列_Java并发编程线程池任务队列 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

类ThreadPoolExecutor最常使用的构造方法是:

ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueueworkQueue)

参数解释如下:corePoolSize:池中所保存的线程数,包括空闲线程,也就是核心池的大小。

maximumPoolSize:池中允许的最大线程数。

keepAliveTime:当线程数量大于corePoolSize值时,在没有超过指定的时间内是不从线程池中将空闲线程删除的,如果超过此时间单位,则删除。

unit:keepAliveTime参数的时间单位。

workQueue:执行前用于保持任务的队列。此队列仅保持由execute方法提交的Runnable任务。

其中workQueue参数的解释对吗?我运行下面的例子发现submit提交的Callable任务一样会占用workQueue,书上错了吗public class Main {

static class MyCallable implements Callable {

private int age;

public MyCallable(int age) {

super();

this.age = age;

}

public String call() throws Exception {

Thread.sleep(1000);

System.out.println("年龄是:" + age);

return "返回值 年龄是:" + age;

}

}

public static void main(String[] args) throws InterruptedException {

ThreadPoolExecutor executor = new ThreadPoolExecutor(7, 8, 5, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1));

executor.submit(new MyCallable(1));// 1

executor.submit(new MyCallable(2));// 2

executor.submit(new MyCallable(3));// 3

executor.submit(new MyCallable(4));// 4

executor.submit(new MyCallable(5));// 5

executor.submit(new MyCallable(6));// 6

executor.submit(new MyCallable(7));// 7

executor.submit(new MyCallable(8));// 8

executor.submit(new MyCallable(9));// 9

// executor.submit(new MyCallable(10));// 10

Thread.sleep(300);

System.out.println("A:" + executor.getCorePoolSize());

System.out.println("A:" + executor.getPoolSize());

System.out.println("A:" + executor.getQueue().size());

Thread.sleep(5000);

System.out.println("B:" + executor.getCorePoolSize());

System.out.println("B:" + executor.getPoolSize());

System.out.println("B:" + executor.getQueue().size());

executor.shutdown();

}

}

总结

以上是生活随笔为你收集整理的java 多线程 任务队列_Java并发编程线程池任务队列的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。