java线程池

大神文章:https://www.jianshu.com/p/50fffbf21b39  ;

总结:
为了提高并行处理能力,或者想异步处理问题,可以使用线程池;
线程池减少了线程的创建,但是原先创建的线程会被新加入的任务重新赋值线程变量;

示例:
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
 
import com.google.common.util.concurrent.ThreadFactoryBuilder;
///////添加任务
    private static ExecutorService rnrThreadPool = new ThreadPoolExecutor(2, 100,
        60L, TimeUnit.MILLISECONDS,
        new LinkedBlockingQueue<Runnable>(20), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());
    
    
    public static void main(String[] args) {
     for(int i= 0; i< 100; i++) {
     if(i<2) {
     rnrThreadPool.submit(new RnrCallbackThread2(""+i, false));
     }else{
     rnrThreadPool.submit(new RnrCallbackThread2(""+i, true));
     }
     }
     }
////////任务体
package com.svw.mos.mno.vo.thread;
 
import java.util.Map;
import java.util.concurrent.Callable;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * 线程处理如下任务: 1,同步状态到核心层,2,获取基础厂包 3,查车型,设置车型 4,到核心基础场包下单
 */
public class RnrCallbackThread2 implements Callable<Map<String, String>> {
private static final Logger LOGGER = LoggerFactory.getLogger(RnrCallbackThread2.class);
private String reqId;
private boolean isSuccessRnr;
 
 
public RnrCallbackThread2(String reqId, boolean isSuccessRnr) {
this.reqId = reqId;
this.isSuccessRnr = isSuccessRnr;
 
}
 
@Override
public Map<String, String> call() throws Exception {
Thread.sleep(2000l);
LOGGER.info("threadName:{},reqId:{},issuccess:{}", Thread.currentThread().getName(), reqId, isSuccessRnr);
return null;
}
 
}
 
posted @   原子切割员  阅读(126)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示