佛山网站制作哪家好,wordpress小程序发表文章,上海关键词优化推荐,公众号文章 wordpress为什么不建议用Executors启动线程池
*队列LinkedBlockingQueue是没有边界的队列,请求多会造成OOM *建议使用ThreadPoolExecutors 线程池中提交一个任务的流程#xff1f;
1先判断线程池是否有线程#xff0c;如果与就直接执行#xff0c;没有就放队列 2如果队列满了#… 为什么不建议用Executors启动线程池
*队列LinkedBlockingQueue是没有边界的队列,请求多会造成OOM *建议使用ThreadPoolExecutors 线程池中提交一个任务的流程
1先判断线程池是否有线程如果与就直接执行没有就放队列 2如果队列满了就拒绝代码要做处理
线程池有的状态
1. Running运行状态线程池已经创建并且正在运行可以接受新的任务并处理已提交的任务。 2. Shutdown关闭状态线程池不再接受新的任务但会继续处理已提交的任务直到所有任务完成。在关闭状态下线程池不会创建新的线程。 3. Stop停止状态线程池不再接受新的任务并且会中断正在执行的任务。它会尝试终止所有的工作线程。 4. Tidying整理状态所有的任务都已经终止工作线程数量已经降为零。线程池会进行一些清理工作例如关闭底层线程池等。 5. Terminated终止状态线程池已经完全终止不再接受任务也不会处理已提交的任务。 优雅的停止线程
*stop释放synchronized不会释放RreetranLock *建议用字段再线程做判断 *用全局变量控制 tomcat是如何定义线程的
*tomcat中线程池走构造就会启动所有核心线程池 *tomcat的思想优先启动线程线程达到上线才加入队列 线程池怎么设置核心线程数和最大线程数
*先看是CPU密集型 还是IO密集型或者是混合型 *CUP密集可以1 *IO密集可以X2 *核心业务可以多,非核心可以少, *最终还是要压测得到合适的 volatile修饰的变量可以多线程可见 并发中的原则性要加锁实现 产生死锁的原因 1资源只能被一个线程使用 2线程阻塞 不释放被占用资源 3若干线程头尾相连的循环等待资源关系 建议加锁顺序 。 设置超时时间死锁检查 sychronize和ReetrantLock的区别 Java 中主要有以下几种锁 *互斥锁synchronized**互斥锁是 Java 中最常用的锁它可以保证同一时间只有一个线程可以访问某个资源。 *读写锁ReentrantReadWriteLock**读写锁可以同时允许多个线程读取一个资源但只有一个线程可以写入该资源。 *公平锁FairLock**公平锁保证等待时间最长的线程可以最先获得锁。 *非公平锁NonfairLock**非公平锁不保证等待时间最长的线程可以最先获得锁。 *自旋锁SpinLock**自旋锁是不需要操作系统参与的锁它可以提高锁的性能。 耗cpu 建议在时间短的用 *乐观锁OptimisticLock**乐观锁假设在大多数情况下多个线程不会同时访问同一个资源因此它不会对资源进行加锁。 如果需要保证同一时间只有一个线程可以访问某个资源那么可以使用互斥锁。如果需要同时允许多个线程读取一个资源但只有一个线程可以写入该资源那么可以使用读写锁。如果需要保证等待时间最长的线程可以最先获得锁那么可以使用公平锁。如果不需要保证等待时间最长的线程可以最先获得锁那么可以使用非公平锁。如果需要提高锁的性能那么可以使用自旋锁。如果需要在读操作时不加锁那么可以使用乐观锁 from https://www.yuque.com/tulingzhouyu/sfx8p0/dr3wi1f7uxi961uo?singleDoc# 密码bghr