/*
* 创建线程的方式四:使用线程池
* 好处:
* 1.提高响应速度(减少了创建新线程的时间)
* 2.降低资源消耗(重复利用线程池中线程,不需要每次都创建)
* 3.便于线程管理
* corePoolSize:核心池的大小
* maximumPoolSize:最大线程数
* keepAliveTime:线程没有任务时最多保持多长时间后会终止
* Executors是一个工具类
* */
创建线程有4中方法
1)继承Thread类创建线程
2)实现Runnable接口创建线程
3)使用Callable和Future创建线程
4)使用线程池例如用Executor框架
class NumberThread implements Runnable{
@Override
public void run() {
System.out.println("吃饭");
}
}
public class Thread {
public static void main(String[] args) {
//1.提供指定线程数量的线程池
//这里只是造了线程数,而要干什么我们要自己实现Runnable接口来指定我们需要干什么事情
//1.1ExecutorService是一个接口 由于接口没有对象,所以返回的是ExecutorService实现类的对象
//我要干的事情是new NumberThread()里面的
//执行前,设置线程池的属性
//为了设置像城池属性 得对其强转,因为接口没有属性,有也是静态常量,因为只有类中的属性肯定是变量,接口中的都是常量
ExecutorService Service = Executors.newFixedThreadPool(10);
ThreadPoolExecutor Service1=(ThreadPoolExecutor) Service;
System.out.println(Service.getClass());
//2.执行指定的线程的操作。需要提供实现Runnable接口或Callable接口的实现类的对象
Service.execute(new NumberThread());//适合使用于Runnable
//关闭连接池
Service.shutdown();
// Service.submit(null);//适合使用于Callble
}
}