android 線程池


ExecutorService pool;                            android 自身的線程池              
public void Init()
    {
        pool = Executors.newFixedThreadPool(3);  
        for(int j=0 ; j< 10 ; j++)
        {
            Thread thread = new Thread()
            {
                public void run()
                {
                    for(int i=0;i<10 ;i++)
                    {
                        Trace.Log("-----------------------thread---------"+this.getId());
                        try
                        {
                            Thread.sleep(200);
                        }
                        catch (InterruptedException e)
                        {
                            e.printStackTrace();
                        }
                    }
                }
            };
            pool.submit(thread);              //加入線程
            
        }
        pool.execute(new Thread(){              // 所有線程結束之后執行
            public void run()
            {
                Trace.Log("-----------------------execute---------"+this.getId());
                
                pool.execute(new Thread(){
                    public void run()
                    {
                        Trace.Log("-----------------------execute-----3----"+this.getId());
                    }
                });
            }
        });        
    }

獲取線程池的三種方法:

1、newFixedThreadPool
創建一個可重用固定線程數的線程池,以共享的無界隊列方式來運行這些線程。在任意點,在大多數 nThreads 線程會處於處理任務的活動狀態。如果在所有線程處於活動狀態時提交附加任務,則在有可用線程之前,附加任務將在隊列中等待。如果在關閉前的執行期間由於失敗而導致任何線程終止,那么一個新線程將代替它執行后續的任務(如果需要)。在某個線程被顯式地關閉之前,池中的線程將一直存在。
  

2、newSingleThreadExecutor
創建一個使用單個 worker 線程的 Executor,以無界隊列方式來運行該線程。(注意,如果因為在關閉前的執行期間出現失敗而終止了此單個線程,那么如果需要,一個新線程將代替它執行后續的任務)。可保證順序地執行各個任務,並且在任意給定的時間不會有多個線程是活動的。與其他等效的 newFixedThreadPool(1) 不同,可保證無需重新配置此方法所返回的執行程序即可使用其他的線程。

3、newCachedThreadPool
創建一個可根據需要創建新線程的線程池,但是在以前構造的線程可用時將重用它們。對於執行很多短期異步任務的程序而言,這些線程池通常可提高程序性能。調用 execute 將重用以前構造的線程(如果線程可用)。如果現有線程沒有可用的,則創建一個新線程並添加到池中。終止並從緩存中移除那些已有 60 秒鍾未被使用的線程。因此,長時間保持空閑的線程池不會使用任何資源。注意,可以使用 ThreadPoolExecutor 構造方法創建具有類似屬性但細節不同(例如超時參數)的線程池。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM