精华内容
下载资源
问答
  • 使用线程池excel中的多个SHEET

    千次阅读 2012-11-08 11:26:09
    ExecutorService pool = null; if(sheetList.size() == 1){ pool = Executors.newSingleThreadExecutor(); }else if(sheetList.size() > 1){ temp = "批量";... pool = Executors.newFixedThreadPool(3


     

    		ExecutorService pool = null;
    		if(sheetList.size() == 1){
    			pool = Executors.newSingleThreadExecutor();
    		}else if(sheetList.size() > 1){
    			temp = "批量";
    			pool = Executors.newFixedThreadPool(3);
    		}
    		StringBuffer sb = new StringBuffer("");
    		ArrayList<Future<String>>  results = new ArrayList<Future<String>>(); 
    		
    		try {
    			for(int i=0;i<sheetList.size();i++){
    				Map<String,String> sheetMap = sheetList.get(i);
    				if(orgId == null || docId == null){
    					orgId = sheetMap.get("orgId");
    					docId = sheetMap.get("docId");
    				}
    				String filePath = sheetMap.get("filePath");				
    				results.add((Future<String>)pool.submit(new CheckSheetUtil(sheetMap,filePath)));
    			}
    			boolean b = false;
    			for(Future<String> fs : results){
    		            try{ 
    		            	if(!fs.get().contains("审核成功")){
    		            		b = true;
    			            	sb.append(fs.get()+",");//可以调用很多方法,包括是否工作等等 
    			            	sb.deleteCharAt(sb.lastIndexOf(","));
    		            	}
    		            }catch(Exception e){ 
    		                e.printStackTrace(); 
    		            }
    		         }
    			if(!b){
    				sb.append(temp).append("审核成功!");
    			}
    			result = "{success:'true',msg:'"+sb.toString()+"'}";
    		} catch (Exception e) {
    			e.printStackTrace();
    			result = "{success:'false',msg:'审核过程中发生异常!审核失败!'}";
    		} finally {
    			pool.shutdown(); 
    			updateTotalStatus(orgId+docId);
    		}

     

     

    public class CheckSheetUtil implements Callable<String>{
    	public String call() throws Exception {
      		return ReadExcelByThread(sheetMap, filePath); //略。。。
     	}
    }



     

    展开全文
  • 一、场景  在开发excel处理数据时,因为数据库的卡顿,一次插入2000条数据速度可能需要1min左右,所以考虑使用线程池;...--工具类hutool,java兵器库,用于读取excel--> <dependency&g...

    一、场景

      在开发excel处理数据时,因为数据库的卡顿,一次插入2000条数据速度可能需要1min左右,所以考虑使用线程池;每200个分组,有n组,就开(n+1)个线程去分批同时处理这些数据。

    二、依赖

    1. pom.xml

            <!--工具类hutool,java兵器库,用于读取excel-->
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>4.5.10</version>
            </dependency>    

    2. excel的表格只有一个字段就是keyword,示例如下:

    3. 数据库:t_keyword(只有一个字段keyword,并且加唯一索引)

     

    三、代码

    dao.java

    package com.bds.pool.ihg_fb;
    
    import org.nutz.dao.impl.NutDao;
    import org.nutz.dao.impl.SimpleDataSource;
    
    /**
     * @ClassName:         Dao.java
     * @Description:  
     * @author :         jack.Lu
     * @version :         V1.0  
     * @Date :             2019年7月11日 下午5:08:13 
     */
    public class Dao {
        
        public static NutDao getDao() {
            // 创建一个数据源
            SimpleDataSource dataSource = new SimpleDataSource();
            dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1/bds");
            dataSource.setUsername("root");
            dataSource.setPassword("root");
    
            // 创建一个NutDao实例,在真实项目中, NutDao通常由ioc托管, 使用注入的方式获得.
            NutDao dao = new NutDao(dataSource);
            return dao;
        }
    
    }

    dealExcel.java

    package com.bds.pool.ihg_fb;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.nutz.dao.impl.NutDao;
    
    /**
     * @ClassName:         DealExcel.java
     * @Description:  
     * @author :         jack.Lu
     * @version :         V1.0  
     * @Date :             2019年7月11日 下午2:18:48 
     */
    public class DealExcel implements Runnable{
        
        List<String> list;
        
        private String thread_name;
        
        private Boolean success=false;
        
        public DealExcel(String thread_name,List<String> list) {
            this.thread_name = thread_name;
            this.list=list;
        }
        
        public int deal() {
            List<KeyWord> list_k = new ArrayList<>();
            KeyWord k = new KeyWord();
            NutDao dao = Dao.getDao();
            for(String s : list) {
                k.setKeyword(s);
                try {
                    dao.insert(k);
                } catch (Exception e) {
                    System.out.println(s+">>>>>>>>>>>已经插入!");
                }
            }
            
            return list.size();
        }
    
        @Override
        public void run() {
            System.out.println(this.thread_name+"***********"+Thread.currentThread().getName()+"开始处理....");
            int deal = this.deal();
            success = true;
            System.out.println(this.thread_name+"***********"+Thread.currentThread().getName()+"处理完成"+deal+"条数据");
        }
    
        public Boolean getSuccess() {
            return success;
        }
    
        public String getThread_name() {
            return thread_name;
        }
        
        
        
    }

    KeyWord.java

    package com.bds.pool.ihg_fb;
    
    import org.nutz.dao.entity.annotation.Column;
    import org.nutz.dao.entity.annotation.Table;
    
    /**
     * @ClassName:         KeyWord.java
     * @Description:  
     * @author :         jack.Lu
     * @version :         V1.0  
     * @Date :             2019年7月11日 下午5:09:54 
     */
    @Table("t_keyword")
    public class KeyWord {
        @Column
        private String keyword;
    
        public String getKeyword() {
            return keyword;
        }
    
        public void setKeyword(String keyword) {
            this.keyword = keyword;
        }
        
    
    }

    PoolThread.java

    package com.bds.pool.ihg_fb;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    
    import cn.hutool.core.io.FileUtil;
    import cn.hutool.poi.excel.ExcelReader;
    import cn.hutool.poi.excel.ExcelUtil;
    
    /**
     * @ClassName:         PoolThread.java
     * @Description:      开启线程池
     * @author :         jack.Lu
     * @version :         V1.0  
     * @Date :             2019年7月11日 下午2:18:35 
     */
    public class PoolThread {
        /**
       *程序的入口
       */
    public static void main(String args[])throws Exception{ readExcel(); } /** * 1.读取excel * 2.对excel进行200分段 * 3.开启线程池 * @param args */ public static void readExcel(){ //1.读取excel ExcelReader excelReader = ExcelUtil.getReader(FileUtil.file("C:\\Users\\admin\\Desktop\\新建文件夹\\XHS 笔记需求 0709-03.xlsx")); List<Map<String,Object>> read = excelReader.readAll(); PoolThread pl = new PoolThread(); List<List<String>> excelByRead = pl.getExcelByRead(read);//500条数据,每200一条,共3组 //要开启的线程数//3组 int size = excelByRead.size(); ExecutorService pool = Executors.newFixedThreadPool(size+1); List<DealExcel> task_list = new ArrayList<DealExcel>(); for (int i = 0; i < size; i++) { List<String> list = excelByRead.get(i); DealExcel dx = new DealExcel(i+"-",list); task_list.add(dx); pool.execute(dx); } //结束线程池 pool.shutdown(); while(true) { if(pool.isTerminated()) { break; } try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } String s = ""; for(DealExcel d : task_list) { s= s+d.getThread_name()+":"+(d.getSuccess()?"成功":"失败")+";"; } System.out.println("----------------------------------------------"); System.out.println(s); } /** * 以200为临界点 每200个放入一个String数组中,再放入List 集合中 * @param read * @return */ private List<List<String>> getExcelByRead(List<Map<String,Object>> read) { List<List<String>> list_list = new ArrayList<>(); int size = read.size(); int group = 200; int num = size/group; if(size%group!=0) {//说明不是整数101-》1+1=2 num = num +1; } System.out.println("准备创建几个数组就是开启多少线程:"+num); //开始遍历excel int temp = 0; for (int j = 1; j <= num; j++) { List<String> list = new ArrayList<>(); for (int i = temp; i < size; i++) { Map<String, Object> map = read.get(i); String keyword = map.get("keyword")+""; list.add(keyword); if ((i+1)%group==0) { temp=i+1; break; } } System.out.println("*****已经加入集合"+j+"次"); list_list.add(list); } System.out.println("########################添加结束##################################"); return list_list; } }

     学习总结:多种线程池的使用区别是他们的参数不同使用场景不同,在学习线程池的时候,到网上搜索所有的案例,但是发现全部都是分析线程池的区别,解剖源码,开始分析他们的体系,要么就是文章全部都是一样的东西,重复论述,巴拉巴拉。。。确实没有一个使用场景可以让好好参考,于是自己硬是想了一个场景,不知道效果如何但是确实联系了第一次写线程池来处理业务。希望有错可以给我及时指出来。谢谢!

    转载于:https://www.cnblogs.com/luruihua/p/11171547.html

    展开全文
  • 批量读取excel文件并利用dbcp连接池写入数据库
  • C# 读取 Excel

    2021-04-28 03:56:04
    C# 读取 Excel出现问题 总结: Excel版本导致的Provider、Extended Properties不同 Excel的格式不一样,右键新建xml,软件内新建xlsx 表名加方括号 拓展字那里Excel 8.0,要有空格 导包,除了最后一个要加,其它三个...

    (问题)总结

    (记录的是所知的,有些不全或欠缺知道方向就行了)
    C# 读取 Excel出现问题
    总结:
    Excel版本导致的Provider、Extended Properties不同
    Excel的格式不一样,右键新建xml,软件内新建xlsx
    表名加方括号
    拓展字那里Excel 8.0,要有空格
    导包,除了最后一个要加,其它三个也不知道具体作用(都加吧,第一个是为了导出正确格式,没用到)
    在这里插入图片描述
    (不确定其具体作用,因为报错信息有没有变没印象)
    开启32位线程池
    安装32位AccessDatabaseEngine

    之前的代码(不完整)

                //connect
                string source = @"D:\Data\Projects\VisualStudio\VisualStudio2019\Unity Siki CSharp高级\79 Excel\Excel.xls";
                string connectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" 
                    + "Data Source=" + source +";"
                    + "Extended Properties=\"Excel8.0;HDR=YES;IMEX=1\"" ;
                OleDbConnection oleDbConnection = new OleDbConnection(connectionString);
    
                //query
                oleDbConnection.Open();
                string tableName = "Excel$";
                string sql = "select * from "+ tableName;
                OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oleDbConnection);
    

    之后的代码(完整)

    using System;
    using System.Data;
    using System.Data.OleDb;
    
    namespace _79_Excel
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                //connect
                string source1 = @"D:\Data\Projects\VisualStudio\VisualStudio2019\Unity Siki CSharp高级\79 Excel\Excel.xls";//新建xlsx,改为xls
                string source2 = @"D:\Data\Projects\VisualStudio\VisualStudio2019\Unity Siki CSharp高级\79 Excel\Excel_2003.xls";//新建xls
                string source3 = @"D:\Data\Projects\VisualStudio\VisualStudio2019\Unity Siki CSharp高级\79 Excel\Excel_2007.xlsx";//新建xlsx
               string source4 = @"D:\Data\Projects\VisualStudio\VisualStudio2019\Unity Siki CSharp高级\79 Excel\Excel_2007_xlsx.xlsx";//在Excel里面新建文件            	
               string connectionString = "Provider = Microsoft.ACE.OLEDB.12.0;";
                connectionString += "Data Source=" + source4 + ";";
                connectionString += "Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
    
                //string connstr = "Provider=Microsoft.ACE.OLEDB.12.0; Persist Security Info=False;Data Source=" + @Excfilename + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=2'";
                /**
                 * Microsoft.ACE.OLEDB.12.0 == xlsx
                 * Microsoft.Jet.OLEDB.8.0 == xls
                 * Excel12.0 ==xlsx Excel18.0==xls
                 * HDR  首行是不是标题
                 * IMEX 0只写 1只读 2读写
                 * Extended Properties="'......'",可以
                 * Extended Properties="/"....../"",可以
                 */
    
    
    
                OleDbConnection oleDbConnection = new OleDbConnection(connectionString);
    
                //query
                oleDbConnection.Open();
                string tableName1 = "Excel$";
                string tableName2 = "Excel_2003$";
                string tableName3 = "Excel_2007$";
                string tableName4 = "[Sheet1$]";
                string sql = "select * from "+ tableName4;
                OleDbDataAdapter adapter = new OleDbDataAdapter(sql, oleDbConnection);
    
                //DataSet
                DataSet dataSet = new DataSet();//容器
                adapter.Fill(dataSet);
    
                //close
                oleDbConnection.Close();
    
    
                //table
                DataTableCollection tableCollection = dataSet.Tables;
                DataTable dataTable = tableCollection[0];//第一张表
    
                //row
                DataRowCollection rowCollection = dataTable.Rows;
                foreach (DataRow dataRow in rowCollection)
                {
                    for(int i=0;i<rowCollection.Count;i++)
                    {
                        Console.Write(dataRow[i] + "\t");
    
                    }
                    Console.WriteLine();
                }
    
    
                Console.ReadKey();
            }
        }
    }
    
    

    (Done,不确定具体作用)系统没有“internet信息服务(IIS)管理器”

    练习VS中读取Excel(.xls)文件时,出现对"Provider = Microsoft.Jet.OLEDB.4.0;"的 在本地机器未注册, 需要启用“Internet 信息服务(IIS)管理器”功能,并且将程序池水设置为32true

    (Done)‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine.”

    系统没有“internet信息服务(IIS)管理器”

    (Done)在电脑上没有找到服务WAS

    在这里插入图片描述

    在计算机“.”上没有找到WAS服务

    将项目的AnyCpu改成x86,
    不知道什么时候,发现.xls的绿色图标加载出来

    (Done,但不确定具体起作用)找不到msexcl40.dll,Regsvr32加载失败

    在这里插入图片描述

    (没用)System.Data.OleDb.OleDbException:“找不到可安装的 ISAM。”(卡住)

    【未解决】System.InvalidOperationException: 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
    没用,把IMEX=1’去掉就行了

    (需知)拓展字Excel版本

    Excel拓展字介绍
    Excel是2003还是2007还是怎么看

    (Done)找不到Microsoft.ACE.OLEDB.12.0

    System.InvalidOperationException:“The ‘Microsoft.ACE.OLEDB.4.0’ provider is not registered on the local machine.”
    xls是2003,Microsoft.Jet.OLEDB.4.0
    xlsx是2007,Microsoft.ACE.OLEDB.12.0
    两个都是Excel 8.0

    下载AccessDatabaseEngine
    安装32还是64,电脑64;之前也提到32位程序池。先试64(两者安装冲突),结果是32位

    (继续显示)System.Data.OleDb.OleDbException:“找不到可安装的 ISAM。”

    (Done)System.Data.OleDb.OleDbException:“外部表不是预期的格式。”

    8.0那里空了个格,要空格。就是这样ISAM错误没了,虽然出现其他错误

                string connectionString = "Provider = Microsoft.ACE.OLEDB.12.0;";
                connectionString += "Data Source=" + source + ";";
                connectionString += "Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
    

    (Done)Excel文件问题

    //新建xlsx,改为xls(我选的,常用xlsx,视频是xls,所以有改了回来)
    //新建xls
    //新建xlsx

    (没用)外部表不是预期的格式

    c#.net:System.Data.OleDb.OleDbException: 外部表不是预期的格式的解决办法

    (Done)Excel可能不是标准的xls,而是关于xml

    检测该文件是否为标准的.xls的文件

    先打开Excel,再新建文件。不要再资源管理器里面鼠标右键
    还有直接复制粘贴其他表格的内容,可能也有问题。自己手敲吧。(试了没问题)

    (新进展,完成)System.Data.OleDb.OleDbException:“FROM 子句语法错误。”

    补上表名中的方括号

    (完成)打印

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • java使用easyExcel读取excel文件 前言 1:这是一个读取简单Excel的栗子 2:这里只写了读取,后面有时间会写一个生成Excel的Demo。 1.准备工作 创建一个Excel:bookInfo.xlsx maven引入easyExcel <!-- 读写...

    java使用easyExcel读取excel文件

    前言

    1:这是一个读取简单Excel的栗子
    2:这里只写了读取,后面有时间会写一个生成Excel的Demo。

    1.准备工作

    创建一个Excel:bookInfo.xlsx
    在这里插入图片描述

    maven引入easyExcel

    		<!--  读写excel  之前使用过1.1.2 beat1会产生精度问题,建议使用稳定版本的 easyexcel -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>2.2.6</version>
            </dependency>
    

    备注:之前用的版本不对,读取结果很不理想(获取到了奇奇怪怪的数据结果)。后面换成了2.2.6版本就OK了。

    2.Excel对应的Model

    model中定义了属性对应的excel列位置

    import com.alibaba.excel.annotation.ExcelProperty;
    import lombok.Data;
    
    import java.math.BigDecimal;
    import java.util.Date;
    
    @Data
    public class BookInfoExcelModel {
        @ExcelProperty(value = "书籍名称", index = 0) // 定义表头名称和位置,0代表第一列
        private String bookName;
        @ExcelProperty(value = "书籍价格", index = 1)
        private BigDecimal bookPrice;
        @ExcelProperty(value = "书籍作者", index = 2)
        private String bookAuther;
        @ExcelProperty(value = "书籍类别", index = 3)
        private String bookType;
        @ExcelProperty(value = "珍本标识", index = 4)
        private String rareFlag;
        @ExcelProperty(value = "出版社", index = 5)
        private String press;
        @ExcelProperty(value = "出版日期", index = 6)
        private Date pressDate;
        @ExcelProperty(value = "备注", index = 7)
        private String remark;
    }
    

    3.创建Excel监听类

    import com.alibaba.excel.context.AnalysisContext;
    import com.alibaba.excel.event.AnalysisEventListener;
    import com.example.demo.executer.bookInfo.model.BookInfoExcelModel;
    import com.example.demo.executer.bookInfo.service.BookInfoService;
    import lombok.SneakyThrows;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.transaction.annotation.Transactional;
    
    import java.util.LinkedList;
    import java.util.concurrent.ExecutorService;
    
    @Slf4j
    public class BookInfoExcelListener extends AnalysisEventListener<BookInfoExcelModel> {
    
        private BookInfoExcelModel bookInfoExcelModel;
    	//BookInfoService 提供插入数据库的接口
        //private BookInfoService bookInfoService;
    	//TODO 这个引入了线程池,当Excel数据量大时,可以快速处理。可以去掉
        //private ExecutorService executorService;
    
    
        /**
         * 自定义用于暂时存储data
         * 可以通过实例获取该值
         */
        private LinkedList<BookInfoExcelModel> datas = new LinkedList<BookInfoExcelModel>();
    
    	//要使用线程池,可以放开这个注释
    //    public BookInfoExcelListener(BookInfoExcelModel bookInfoExcelModel, BookInfoService bookInfoService,ExecutorService executorService) {
    //        this.bookInfoExcelModel = bookInfoExcelModel;
    //        this.bookInfoService = bookInfoService;
    //        this.executorService = executorService;
    //    }
    
        public BookInfoExcelListener(BookInfoExcelModel bookInfoExcelModel) {
            this.bookInfoExcelModel = bookInfoExcelModel;
        }
    
        public BookInfoExcelListener() {
        }
    
        @Override
        public void invoke(BookInfoExcelModel bookInfoExcelModel, AnalysisContext analysisContext) {
            //readerId由 a-z|A-Z|0-9|_ 组成的是正确数据  可以过滤数据
    //        if(Pattern.matches("\\w*",blackListExcel.getReaderId())){
            datas.add(bookInfoExcelModel);
    //        }
            //根据自己业务做处理
        }
    
    
        @SneakyThrows
        @Override
        @Transactional
        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
            datas.forEach(data -> {
                log.info("date:{}",date);
               //考虑到导入书籍数量可能上十万,此处使用线程池
               // executorService.execute(()->{
               //    bookInfoService.insertByExcel(data);
               // });
            });
        }
    
    }
    

    4.controller层实现调用

     @RequestMapping("importExcel")
        public BaseResponse importExcel(MultipartFile file){
            try{
                log.info("------------importExcel start------------");
                //实例化监听
                ExcelReader excelReader = EasyExcel.read(file.getInputStream(), BookInfoExcelModel.class, new BookInfoExcelListener(new BookInfoExcelModel())).build();
                //读取excel第一页内容
                ReadSheet readSheet = EasyExcel.readSheet(0).build();
                //读取Excel
                excelReader.read(readSheet);
                //这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的
                excelReader.finish();
                log.info("------------importExcel end------------");
                return new BaseResponse(ResultEnum.SUCCESS);
            }catch (Exception e){
                e.printStackTrace();
                log.error("导入表异常:"+e);
                return new BaseResponse(ResultEnum.FAIL,e.getMessage());
            }
        }
    

    5.测试方法

    可以使用postman软件(免费的)进行测试在这里插入图片描述

    展开全文
  • private void FilterData() { List<Task> tasks = new List<Task>(); IWorkbook workbook = Cshap.Common.ExcelUnit.LoadWorkbook(excelfile_)...
  • 多线程批量读取Excel 2007行数据

    千次阅读 2019-06-18 11:49:22
    package com.allinmd.dossier.common.utils.excel; import java.util.Map; public interface Callback { /** * * @param result <列索引,值> 数据值 * @param currentRowNumber 当前数据所在行号 * @param ...
  • 2.读取excel文件集 3.获取单元格内容写入数据库 4.加入多线程 5.使用定时任务 话不多说,直接附代码 第一步建立远程连接,使用xftp连接 FTPClient ftpClient = new FTPClient(); ftpClient.connect(“192.168.50.211...
  • springboot 多线程使用MultipartFile读取excel文件内容报错问题springboot项目开启多线程前端页面报错信息问题分析问题处理 springboot项目开启多线程 启动类加注解开启 @EnableAsync,实现类方法加注解 @Async ...
  • 要求读取Excel文件并加入数据库。之前同步操作,前端需要等待所有数据处理完才会收到返回。数据过大等待时间太长会挂掉,使用线程异步插入数据库。 1.SpringConfig 创建线程池 @Bean public ...
  • 首先准备:当前文件上级目录下有个excels目录,目录里存在15份.xls文件,每个文件1000条数据,需要通过多进程对这些文件读取..."""通过多进程加速读取excel的测试""" __author__ = "hanyaning@deri.energy" import os...
  • } /** * 读取Excel文件 * * @param file * @throws FileNotFoundException */ public void readExcel(File file) throws FileNotFoundException { if (file == null && file.length() == 0) { LogUtils.d("读取...
  • 第一步:计算线程,分界点可根据实际情况... //起一个线程池,防止A,B俩个线程同时读取到数据在不同线程里执行importData()方法 private final ExecutorService finalThreadPool = Executors.newFixedThreadPool(1);
  • 本案例采用的poi读取大数据的excel文件 usermodel模式对excel操作前需要将文件全部转入内存,对较大文件来说内存开销很大。但是其使用简单。 eventusermodel模式采用事件模型,对文件边读取边处理,内存消耗较低,...
  • python操作mysql数据,读取与写入excel 查询mysql中某一员工的姓名,上下班打卡时间,工作时长并保存到excel表格中 根据月份信息Excel不同表格中,并按照具体日期每日之间空一行分隔
  • 一开始以为是没有按照office软件问题,其实不然,因为server是64位操作系统,如果我们要使用Excel文件读取接口的时候,需要在程序的应用线程池的设置中启用32位应用程序。 转载于:...
  • Java线程池

    千次阅读 2014-07-16 16:44:29
    Java线程池 线程池编程 java.util.concurrent多线程框架---线程池编程(一) 一般的服务器都需要线程池,比如Web、FTP等服务器,不过它们一般都自己实现了线程池,比如以前介绍过的Tomcat、Resin和Jetty等,现在...
  • 线程池下载图片

    2019-09-13 01:27:37
    //本地有差不多1w的图片链接需要下载,单线程也能慢慢下载,但是感觉太浪费时间,对一个开发者来说,时间是不可以浪费的,执行完毕后,差不多160S 1w张图片 960M还是...开始想的是直接读取excel里面的链接,再去下载...
  • 1、读取excel中数据,提取数据中的图片URL 2、利用【线程池】实现多线程访问URL 3、将提交HTTP请求得到的图片保存到本地硬盘 1、读取excel中数据,提取数据中的图片URL 将需要进行处理的数据保存到excel文档中...
  • C# Window编程随记——多线程和线程池在进行C#编程时,我们常常遇到一些任务量很大的情况,例如在读取多个表格的数据,并且要创建多个文件来保存解析之后的数据时,假如只是用简单的for循环来完成的话,会有明显的...
  • 为什么用线程池 线程池做的主要工作就是控制运行的线程的数量,处理过程中,将任务放入到队列中,然后线程创建后,启动这些任务,如果线程数量超过了最大数量的线程排队等候,等其它线程执行完毕,再从队列中取出...
  •  问题一:Excel文件导入后首先要被解析为存放对象的列表,数据量大的情况下可能会导致内存溢出,解析时间过长;  问题二:插入数据库的时候,数据量大,写入的时间长  问题三:要对数据库中的现有数据进项判断(日期去...
  • 主要为大家详细介绍了java线程池实现批量下载文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • <artifactId>import-excel <version>0.0.1-SNAPSHOT <packaging>war <groupId>org.springframework.boot <artifactId>spring-boot-starter-parent <version>1.4.1.RELEASE <groupId>org.spring...
  • 在POI中提供的XSSFWorkBook及HSSFWorkBook在Excel表格大批量读取以及写入操作时,就是数据量过大会产生内存溢出;在网上众多能解决的方案中,我会提供一个实际运用并能成功解决的方案;采用SAX及多线程读取的方式,...
  • 最近项目中为了提高用户体验度,前台创建任务后台任务,用多线程来跑。 现在的场景:后台定时任务管理这两个线程池,一个最大... 我的实现原理:定时任务读取任务,放到任务队列表中,然后使用线程池消费任务队...
  • 今天小G,在开发一个项目的时候,导入excel,20万数据到数据库,该数据为业务数据,无法让DBA进行导入,然后小G就想,那就线程走起; 说起线程就想起线程池,大家也知道,线程池可以防止 1、创建同类的线程导致...
  • 京东Java研发岗一面(基础面,约1小时) 自我介绍,主要讲讲做了什么...线程池工厂有哪些线程池类型,及其线程池参数是什么? hashmap原理,处理哈希冲突用的哪种方法? 还知道什么处理哈希冲突的方法? Java G

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,088
精华内容 835
关键字:

线程池读取excel