利用线程池复用线程
package thread.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Demo1 { public static void main(String[] args) { /** * 线程池案例 * 1:利用线程池复用线程减少反复创建线程次数 * 提高线程使用效率 * 2:利用线程池保护线程总数,避免服务器的资源 * 使用过载 * */ //利用工厂方法newFixedThreadPool创建一个线程池对象 ExecutorService pool =Executors.newFixedThreadPool(10); //创建10个任务交给线程池,复用线程执行 for(int i =0 ;i <=10; i++) { //创建被线程执行的任务 Runnable task =new PrintTask(i); pool.submit(task); } } } /** 被线程池执行的任务 */ class PrintTask implements Runnable { int n; public PrintTask(int n) { this.n = n; } public void run() { Thread t = Thread.currentThread(); for (int i = 0; i < 10; i++) { System.out.println(t + "task:" + n); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(n+"over!"); } }