<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ゞ沉默是金ゞ

    魚離不開水,但是沒有說不離開哪滴水.
    posts - 98,comments - 104,trackbacks - 0
    This article will discuss about Thread pool with fixed number of thread. From Java 5.0+ one can get such pool from Executors using following method –
    public static ExecutorService 
                   newFixedThreadPool(int nThreads)
        Creates a thread pool that reuses a fixed number of threads operating off a shared unbounded queue. At any point, at most nThreads threads will be active processing tasks. If additional tasks are submitted when all threads are active, they will wait in the queue until a thread is available. If any thread terminates due to a failure during execution prior to shutdown, a new one will take its place if needed to execute subsequent tasks. The threads in the pool will exist until it is explicitly shutdown.

    Example-
    Suppose we have 100 properties files in an application. We have one thread that can read properties file and return a map value. We want to optimize the time to read all 10 properties file by using concurrent reading. Here optimize means – we need a perfect balance between CPU Utilization and total time consumed by reading process.

    Pseudo code – READER THREAD

    Config Reader implements Callable<Map<String, String>
    try{
        // Get the file name in the constructor of thread
        // Check if File exists
        // Read the file and retrun the map object
    }catch(Exception e){
            //release all the resource
            //return null
    }

    Main THREAD-
            // Get a fixed thread pool from Executors
     try{
        // Get the list of all properties file in the directory
        // Create a READER THREAD by passing the name of file
        // store the READER thread in the a list
        //release all the thread in one go and get the Map objects
    }catch(Exception e){
                    //release all the resources
                    // print the stack trace
    }finally{
            //shutdown the thread pool
    }

    package com.jovialjava.blog.threads;

    import java.io.File;
    import java.io.FileInputStream;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Properties;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;

    class Reader implements Callable<Properties> {

        
    private String name = null;

        
    public Reader(String name) {
            
    this.name = name;
        }

        
    public Properties call() {
            
    try {
                File f 
    = new File(name);
                Properties prop 
    = new Properties();
                
    if (f.exists() && f.canRead() && f.isFile()) {
                    FileInputStream in 
    = new FileInputStream(f);
                    prop.load(in);
                    
    return prop;
                } 
    else {
                    System.err.println(
    "Please check about this file:[" + f.getAbsolutePath() + "]");
                    
    return null;
                }
            } 
    catch (Exception e) {
                e.printStackTrace();
                
    return null;
            }
        }
    }

    public class FixedThreadPoolExample {
        
    public static String directory = "config";
        
    private static ExecutorService executorPool = null;

        
    public static void main(String args) {
            
    try {
                File dir 
    = new File(directory);
                
    if (dir.isDirectory()) {
                    List
    <Callable<Properties>> fileList = new ArrayList<Callable<Properties>>();
                    String[] files 
    = dir.list();
                    
    /**
                     * Optimization - just 20% of number of files.
                     
    */
                    executorPool 
    = Executors.newFixedThreadPool(files.length / 5);

                    
    for (String file : files) {
                        Callable
    <Properties> reader = new Reader(dir.getAbsolutePath() + File.separator + file);
                        fileList.add(reader);
                    }
                    List
    <Future<Properties>> results = executorPool.invokeAll(fileList);
                    
    /**
                     * Check how many success and how many failure
                     
    */
                    
    int success = 0, failure = 0;
                    
    for (Future<Properties> result : results) {
                        
    if (result.get() == null) {
                            failure
    ++;
                        } 
    else {
                            success
    ++;
                        }
                    }
                    System.out.println(
    "Total number of files [" + fileList.size() + "]");
                    System.out.println(
    "Success Count [" + success + "]");
                    System.out.println(
    "Failure Count [" + failure + "]");
                } 
    else {
                    
    throw new IllegalArgumentException("There is no such directory name -" + directory);
                }
            } 
    catch (Exception e) {
                e.printStackTrace();
            } 
    finally {
                
    if (executorPool != null) {
                    executorPool.shutdown();
                }
            }
        }
    }
    posted on 2012-08-06 10:43 ゞ沉默是金ゞ 閱讀(920) 評論(0)  編輯  收藏 所屬分類: Java SE
    主站蜘蛛池模板: 亚洲毛片免费观看| 亚洲福利在线观看| 亚洲最大中文字幕无码网站| 麻豆高清免费国产一区| 亚洲成人精品久久| 9277手机在线视频观看免费| 亚洲一区影音先锋色资源| 蜜桃成人无码区免费视频网站| 亚洲人成电影在线天堂| 无码av免费网站| 亚洲日韩在线视频| 无码视频免费一区二三区| 亚洲精品无码av片| 亚洲AⅤ视频一区二区三区| 永久免费无码日韩视频| 亚洲日产无码中文字幕| 久久青草精品38国产免费| 亚洲成av人片在线看片| 女人被弄到高潮的免费视频 | 亚洲日韩区在线电影| 久久精品毛片免费观看| 亚洲中文字幕久在线| 日韩黄色免费观看| 久久久久久av无码免费看大片 | 亚洲乱码在线播放| 国产小视频在线观看免费| www免费黄色网| 亚洲2022国产成人精品无码区| 国产四虎免费精品视频| 特级aaaaaaaaa毛片免费视频| 亚洲乱码无码永久不卡在线| 久久99精品视免费看| 亚洲AV成人影视在线观看| 免费乱码中文字幕网站| 日韩精品无码专区免费播放| 亚洲欧美第一成人网站7777| 在线观看亚洲精品国产| 成年人免费的视频| 精品多毛少妇人妻AV免费久久| 亚洲精品成人网站在线播放 | 亚洲自偷自偷图片|