線程池,在多線程開發考慮并發性能優化時都會考慮使用線程池。
public class MyTask implements Runnable { PRivate int taskNum; public MyTask(int taskNum) { this.taskNum = taskNum; } @Override public void run() { System.out.println("正在執行任務task:" + taskNum); try { Thread.currentThread().sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("task:" + taskNum + " 執行完畢!"); }}b)創建線程執行類Test.javaimport java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import java.util.concurrent.ArrayBlockingQueue;public class Test { public static void main(String[] args) { ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(5)); for (int i = 0; i < 15; i++) { MyTask mytask = new MyTask(i); executor.execute(mytask); System.out.println("線程池中的線程數目:" + "" + executor.getPoolSize() + ",隊列中等待執行的任務數目:" + executor.getQueue().size() + ",已執行完成的任務數目:" + executor.getCompletedTaskCount()); } /* * try { Thread.sleep(5000); } catch (InterruptedException e) { * e.printStackTrace(); } * * System.out.print("--------:"+executor.getCompletedTaskCount()); */ executor.shutdown(); }}未完待續......
新聞熱點
疑難解答