能说说工作中线程池的应用吗?

之前我们有一个和第三方对接的需求,需要向第三方推送数据,引入了多线程来提升数据推送的效率,其中用到了线程池来管理线程。

主要代码如下:

javathread-61.png

线程池的参数如下:

  • corePoolSize:核心线程数选择为 CPU 核心数乘以 2。
  • maximumPoolSize:最大线程数选择与核心线程数相同。
  • keepAliveTime:非核心线程的闲置存活时间设置为 0。
  • unit:非核心线程的存活时间单位选择为秒(TimeUnit.SECONDS)。
  • workQueue:线程池的等待队列采用阻塞队列 LinkedBlockingQueue。

同时还用了synchronized 来加锁,保证数据不会被重复推送:

  synchronized (PushProcessServiceImpl.class) {}

ps:这个例子只是简单地进行了数据推送,实际上还可以结合其他的业务,像什么数据清洗啊、数据统计啊,都可以套用。

标签: java, Java面试题, Java问题合集, Java编程, Java问题精选, Java常见问题