java newCachedThreadPool 线程池使用在什么情况下?

问题描述

java newCachedThreadPool 线程池使用在什么情况下?

newCachedThreadPool 再没有任务时会清空任务不占用资源,任务多时可以"无限制"的增加任务,那它和没线程池管理感觉区别就不大了呀……它到底应该怎么使用?

时间: 2024-11-19 01:23:28

java newCachedThreadPool 线程池使用在什么情况下?的相关文章

JAVA创建线程池

线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或 手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制 线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等 待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开 始运行了:否则进入等待队列. 为什么要用线程池: 减少了创建和销毁线程的次数,每个工作 线程都可以被重复利用,可执行

Java创建线程池两种不同方法的比较

用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多个网站或一条线程抓取一个网站的话实在太慢,而且有时一条线程抓取同一个网站的话也比较浪费CPU资源.要用到多线程的等方面,也就免不了对线程的控制或用到线程池.   我在做我们现在的那一个抓取框架的时候,就曾经用过java.util.concurrent.ExecutorService作为线程池,关于ExecutorService的使用代码大概如下: java.util.concurrent.Executors类的API提供大量创建连接池

java抢购功能问题,大并发情况下spring-mvc如何处理

问题描述 java抢购功能问题,大并发情况下spring-mvc如何处理 由spring托管的controller是单例的,正常情况下大并发访问同一接口,应该是会出现并发问题的,现在公司有一个抢购功能需要实现,数据库中有一个字段保存了当前商品剩余量,每次请求如果成功会将这个剩余量减1,多并发的情况会不会将这个值扣减为负数,请问这块功能应该从哪几个维度去考虑,如果不使用异步处理,在保证效率的前提下该如何解决并发问题 解决方案 数据库本身就可以控制,比如SQL Server两句语句就可以搞定 UPD

java中线程池的使用(ThreadPoolExecutor)

一.为什么使用线程池: 1.降低资源消耗.主要指的是降低创建和销毁线程时产生的cpu资源消耗,线程池通过持续工作的线程执行不断分配的新任务,来减少频繁的线程创建与销毁. ##2.提高响应速度.同上 ##3.提高线程的可管理性.线程是稀缺资源,频繁的创建销毁,以及没有控制的大量创建,都会影响系统的稳定性.使用线程池可以统一分配,调优,监控资源. 二.如何创建线程池: new ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long

以实例简介Java中线程池的工作特点_java

什么原因使我们不得不使用线程池? 个人认为主要原因是:短时间内需要处理的任务数量很多 使用线程池的好处: 1.减少在创建和销毁线程上所花的时间以及系统资源的开销 2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存 以下是Java自带的几种线程池: 1.newFixedThreadPool  创建一个指定工作线程数量的线程池. 每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中. 2.newCachedThreadPool 创建

Java(Android)线程池

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? Java 1 2 3 4 5 6 7 new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).start(); 那你就out太多了,new T

Java使用线程池递归压缩文件夹下面的所有子文件

本文将介绍Java中利用线程池递归的方式压缩文件夹下面的所有子文件,具体方法如下: Gzip单个文件压缩 对于单个文件使用GZip压缩. package date0805.demo1;    import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutpu

戏(细)说Executor框架线程池任务执行全过程(下)

原文链接:   首发表于infoq.com 2015年6月 上一篇文章中通过引入的一个例子介绍了在Executor框架下,提交一个任务的过程,这个过程就像我们老大的老大要找个老大来执行一个任务那样简单.并通过剖析ExecutorService的一种经典实现ThreadPoolExecutor来分析接收任务的主要逻辑,发现ThreadPoolExecutor的工作思路和我们带项目的老大的工作思路完全一致.在本文中我们将继续后面的步骤,着重描述下任务执行的过程和任务执行结果获取的过程.会很容易发现,

java反射 在只知道类名的情况下怎么能反射出对象?

问题描述 比如只知道类名是UserInfo的情况下怎么能通过反射得到UserInfo的对象呢?UserInfo类的完全限定名是user.UserInfo. 解决方案 解决方案二:Class.forname("user.UserInfo").newInstance();解决方案三:不可以,只有得到完全限定名才可以解决方案四:这个就比较难了,恐怕得扫描所有包了.