一、线程的基本状态 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代 ...
分类:
编程语言 时间:
2020-07-18 22:35:18
阅读次数:
79
//线程池创建,线程池提交任务使用Callable int corePoolSize = 3; int maximumPoolSize = Runtime.getRuntime().availableProcessors() * 2; BlockingQueue<Runnable> queue = ...
分类:
编程语言 时间:
2020-07-14 16:20:51
阅读次数:
63
种类 Executors.newCachedThreadPool ?定义:无界线程池,可自动回收 ?缺点:涌入大量任务时会大量创建线程 Executors.newFixedThreadPool ?定义:线程池中的线程数固定大小,超出的线程会在队列中等待 ?缺点:任务数量过大效率不高 Executor ...
分类:
编程语言 时间:
2020-07-13 18:42:05
阅读次数:
76
1. 线程池的必要性与核心参数 频繁创建、销毁线程的开销过大,所以创建线程频率高的场景一般都选择使用线程池,例如tomcat与客户端通信时处理发来的请求。创建线程池的参数如下 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize ...
分类:
编程语言 时间:
2020-07-13 18:15:28
阅读次数:
62
一、单例模式的使用场景 1.windows 下的任务管理器以及回收站,整个系统中维护着一个实例 2.网站的计数器,用来达到数据的同步 3.web应用配置对象的读取,使得配置文件成为共享资源 4.数据库连接池对象,主要是节省打开或者关闭连接所引起的效率损耗 5.多线程的线程池设计,使得能够控制线程,方 ...
分类:
其他好文 时间:
2020-07-12 18:45:15
阅读次数:
80
这个东西都已经烂大街了啊,但是我还是想写一下。其实很简单,直接看源码就行。 打开ThreadPoolExecutor.java,搜索他的构造方法,一共看到4个。我们直接看参数最多的一个 /** * Creates a new {@code ThreadPoolExecutor} with the g ...
分类:
编程语言 时间:
2020-07-11 23:03:36
阅读次数:
67
####基础知识点 asp.net生命周期 wcf与webapi的区别 restful api与webservice区别 线程池的理解 数组与链表 Redis存储类型及作用 sql与存储过程优缺点 linq关联查询 Dto对象映射转换 为什么使用ioc ####数据库 死锁 事务隔离 ####asp ...
分类:
Web程序 时间:
2020-07-11 00:07:31
阅读次数:
86
定义线程池 第一步,先在Spring Boot主类中定义一个线程池,比如: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run ...
分类:
编程语言 时间:
2020-07-10 18:41:19
阅读次数:
69
1、定制线程池的大小 1.1、线程池的合理大小 取决于 未来提交的任务类型 和 所部署的系统特征; 2、配置ThreadPoolExecutor 2.1、ThreadPoolExecutor 提供了 一些基本的Executor的实现: (由 工具类Executors 提供的newCachedThre ...
分类:
编程语言 时间:
2020-07-10 11:40:50
阅读次数:
82
1.Executors 提供四种线程池 1.1创建固定线程数目的线程池 创建使用固定线程数的FixedThreadPool,适用于为了满足资源管理的需求,而需要限制当前线程数量的应用场景,它适用于负载比较重的服务器。 public static ExecutorService newFixedThr ...
分类:
编程语言 时间:
2020-07-10 00:14:32
阅读次数:
77