Executors 工具類 創建 的 線程池

cp5m 9年前發布 | 948 次閱讀 Java

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ThreadPoolTest {
static int num = 100;
public static void main(String[] args) throws InterruptedException {
//固定線程數量的線程池,有任務就派空閑線程去執行,多余的任務等待
//ExecutorService pool= Executors.newFixedThreadPool(3);
//根據任務需要,自動創建線程,且 前面已創建的線程,空閑時,可被復用
//ExecutorService pool= Executors.newCachedThreadPool();
//單個線程,若執行期出現失敗而終止此單個線程,則會建一個新線程來代替,運行任務
ExecutorService pool= Executors.newSingleThreadExecutor();
//給線程池加 10條任務
for (int j= 0; j < 10; j++) {
final int task = j;
pool.execute(new Runnable() {

            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                for (int i=0; i < 10; i++) {  
                    System.out.println(Thread.currentThread().getName() + "--" +i  
                            + "--" + task + " of taks" + " 計數:" + (--num));  
                }  
            }  
        });  
        // Thread.sleep(20);  
    }  
    //可安排在給定的延遲后運行或定期執行的命令。   
    ScheduledExecutorService service = Executors.newScheduledThreadPool(3);  
    for (int i = 0; i < 5; i++) {  
        final int x = i;  
        service.scheduleAtFixedRate(new Runnable() {  

            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                System.out.println("Boon " + x + "  "  + Thread.currentThread().getName());  
            }  
        },0,2,TimeUnit.SECONDS);//延遲0秒,周期2秒  
    }  

    //poor.shutdownNow();//試圖馬上停了所有正在執行的任務,返回任務列表  
    pool.shutdown();//把分配給線程池的任務都執行完,就不再等待接受新任務了,  
//  service.shutdown();  

}  

}</pre>

 本文由用戶 cp5m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!