这里简单说一个线程池的小应用,从控制台输入线程访问的线程数量,输出输出工作的线程名,之前先构造一个包含了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正在运行
时间: 2024-10-05 19:34:15