新建java后台线程

在java项目中经常需要存在某个后台线程执行相应的功能,比如异步存储,主线程希望能实时接收外来的请求,并将其存入缓存,而后台线程则应该能从缓存中读取数据,并逐步写入到db中。

那么如何实现多线程呢?示例如下:

首先,我们需要定义一个Servlet,并设定其setUp值为1,那么在程序启动时,就会默认启动该Servlet进而执行其对应的init方法,同样滴,在程序退出时则会执行其destory方法。我们用init和destory方法分别调用后台线程的启动方法和停止方法。


    private static final int DEFAULT_THREAD_COUNT = 1;          //定义默认线程数为1
    private ExecutorService service;                                                  //关键滴,定义ExecutorService
    
    private Integer threadCount= DEFAULT_THREAD_COUNT; //定义临时变量,存储线程数


    public void start(){
        logger.info("starting PersistManager thread pool");
       
        service = Executors.newFixedThreadPool(realThread);     //给ExecutorService service赋值
        
        for( int i = 0; i < realThread; i++ ) {                                            //注意,这里之所以用for循环,是因为可以指定realThread值,也即如果指定启动多个线程的话,会被这里的for

                                                                                                                //循环逐步调用           
                service.execute(new Runnable() {
                    @Override
                    public void run() {
                        logger.info("message listener has started", );
                        while( true ) {                    
                            persistContent();                                                     //这里的persistContent方法是实现后台异步存储的方法
                        }    
                    }
                });
            }
        }
    }
    
    public void stop(){
        logger.info("stoping message listener thread pool");
        service.shutdownNow();                                                      //shutdown  ExecutorService service
        logger.info("message listener thread pool has stoped");
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值