標籤:
這裡簡單說一個線程池的小應用,從控制台輸入線程訪問的線程數量,輸出輸出工作的線程名,之前先構造一個包含了5條線程的對象。
代碼:
import java.util.Scanner;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class Threadd { public static void main(String[] args) { // TODO Auto-generated method stub Scanner s = new Scanner(System.in); ExecutorService es = Executors.newFixedThreadPool(5);//初始化五條線程,當使用的時候就使用,沒有訪問就掛起 runn r = new runn(); int i = Integer.parseInt(s.nextLine());//此處從控制台輸入工作的線程數量 while(--i>0){ es.execute(r); } while(true){ if(es.isTerminated()){ System.out.println("線程任務已經都完成"); break; } } es.shutdown(); try { Thread.sleep(1000); if(es.isShutdown()){ System.out.println("線程池已經銷毀完畢。"); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}class runn implements Runnable{ @Override public void run() { // TODO Auto-generated method stub System.out.println(Thread.currentThread().getName()+"正在運行"); } }
輸入:7
輸出:pool-1-thread-1正在運行
pool-1-thread-3正在運行
pool-1-thread-2正在運行
pool-1-thread-4正在運行
pool-1-thread-2正在運行
pool-1-thread-5正在運行
Java程式設計之線程池應用