多线程的基础知识
Thread
程序:一段静态的代码的组合。
进程:程序的一次运行
线程:线程就是轻量级进行
线程和线程之间采用抢占硬件资源的方式。
线程的5种状态:创建,就绪,运行,阻塞,结束
在创建线程中,有两种方式可以创建。
第一种就是 继承Thread类。自己写一个线程类,继承Thread类,new线程类的对象,调用start方法。
第二种就是 实现Runnable接口(常用)。自己写一个类,实现Runnable接口,创建该类的运行对象,new Thread的对象,把运行对象传入,调用start方法。
线程池
什么需要线程池?
创建线程和销毁线程的过程比较浪费资源
销毁线程会给jvm压力
线程池:用于存放多个可重复利用的线程,当有任务来的时候,就分配一个线程去执行,执行完毕后,线程不销毁,放回线程池中。
//创建一个线程池
//corePoolSize 核心线程数量
//maximumPoolSize 最大线程数量
//keepAliveTime 无任务时,线程保存多久
//unit 时间的单位
//workQueue 工作队列
ThreadPoolExecutor executor = new ThreadPoolExecutor(5,10,10,TimeUnit.MINUTES,new LinkedBlockingQueue<>());
//任务
Runnable r = ()->{
System.out.println(Thread.currentThread().getName()+":"+"abc");
};
//执行任务:把任务加入队列中,等待执行。
executor.execute(r);
//关闭线程池
executor.shutdown();
代码当中,执行任务那一块,任务可以同时执行很多个。