多執行緒-方式一使用執行緒池
阿新 • • 發佈:2020-08-07
方式四:使用執行緒池
class NumberThread implements Runnable{ @Override public void run() { for(int i = 0;i <= 100;i++){ if(i % 2 == 0){ System.out.println(Thread.currentThread().getName() + ": " + i);
//這裡輸出執行緒名與數字中間一定要加 :不然你會疑惑為啥會輸出199/299的問題 為什麼我知道呢因為我就這麼幹過 哈哈哈 } } } }class NumberThread1 implements Runnable{ @Override public void run() { for(int i = 0;i <= 100;i++){ if(i % 2 != 0){ System.out.println(Thread.currentThread().getName() + ": " + i); } } } } public class ThreadPool { public staticvoid main(String[] args) { //1. 提供指定執行緒數量的執行緒池 ExecutorService service = Executors.newFixedThreadPool(10); ThreadPoolExecutor service1 = (ThreadPoolExecutor) service; //設定執行緒池的屬性 // System.out.println(service.getClass()); // service1.setCorePoolSize(15); // service1.setKeepAliveTime();//2.執行指定的執行緒的操作。需要提供實現Runnable介面或Callable介面實現類的物件 service.execute(new NumberThread());//適合適用於Runnable service.execute(new NumberThread1());//適合適用於Runnable // service.submit(Callable callable);//適合使用於Callable //3.關閉連線池 service.shutdown(); } }
* 好處:
* 1.提高響應速度(減少了建立新執行緒的時間)
* 2.降低資源消耗(重複利用執行緒池中執行緒,不需要每次都建立)
* 3.便於執行緒管理
* corePoolSize:核心池的大小
* maximumPoolSize:最大執行緒數
* keepAliveTime:執行緒沒任務時最多保持多長時間後會終止