1. 程式人生 > >非同步通知之多執行緒實現

非同步通知之多執行緒實現

前言

    在專案中要經常使用非同步通知來和其他專案進行通訊,多執行緒只是非同步通知的一種實現方式,示例程式碼如下

正文

//建立一個有執行緒池
        ExecutorService fixedThreadPool = Executors.newFixedThreadPool(MAX_THREADS);  

        fixedThreadPool.execute(new Runnable() {  
            public void run() {  
                boolean continueExec = true;
                while
(continueExec) { try { logger.info("post:{}", parameters); UrlEncodedFormEntity entity; entity = new UrlEncodedFormEntity(parameters); entity.setContentEncoding("utf-8"
); //Content-Type: text/html; charset=UTF-8 entity.setContentType("application/x-www-form-urlencoded"); post.setEntity(entity); HttpClient httpClient = HttpClientFactory.factory(connectionTimeout, soTimeout); String resp = httpClient.execute(post, new
BasicResponseHandler()); logger.info("resp body:{}", resp); continueExec = false; } catch (Exception e) { logger.error("DoNotifyFlow error:", e); long now = CommonTool.getCurrentTimeSeconds(); if (now - startTime >= 60) { continueExec = false; } try { Thread.sleep(3 * 1000); } catch (InterruptedException e1) { logger.error("Thread.sleep error:", e1); } } } } }); fixedThreadPool.shutdown();

在這裡,使用執行緒池來發送http請求,非同步通知第三方服務接受者,需要注意的是,在使用完以後要關閉執行緒池(有待詳細瞭解,因為在其他人的部落格中有看到,使用完不用關閉?貌似其他的地方也會用到…..)

總結

    這裡只是做個記錄來做個例項,在以後會學習更好的方式來實現~~~