Java 线程池示例

2020-11-15 0 By admin

创建多线程的方式四:使用线程池。
提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
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);
      }
    }
  }
}

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 static void 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());  //适合适用于Runable
    service.execute(new NumberThread1());  //适合适用于Runable
//  service.submit(Callable callable);   //适合适用于Callable
    //3.关闭连接池
    service.shutdown();
  }
}