`
遇见那只猫
  • 浏览: 1220 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

求助。多线程读取文件相互影响

    博客分类:
  • Java
 
阅读更多

for(.......) {

new Thread(new Runnable(){

@Override

public void run() {

//读取文件

ReadUtil.read();

}

}).start();

}

 

//-----------读取文件的操作------------

public synchronized static read() {

File file=new File("F://info/订单信息.xls");  

        Workbook wb=null;  

        try {  

            //传入的是文件,获取工作薄 

        wb = Workbook.getWorkbook(file); 

        

            if(wb!=null){  

//do .......

            }  

        } catch (BiffException e) {  

            e.printStackTrace();  

        } catch (IOException e) {  

            e.printStackTrace();  

        }finally {    

            wb.close();    

        }

}

 

如果这个方法不加“同步”的话,就会报错。空指针异常是wb.close()这块。

我不理解的是我启动了多个线程,应该就有多个实例ReadUtils之间的读取文件应该互不干扰才对,为什么一个线程会把另一个线程的IO流给关了。。。

后台错误信息如下:

Exception in thread "Thread-1" java.lang.NullPointerException

at com.excle.jxl4mysql.ReadUtil.read(ReadUtil.java:122)

at com.excle.jxl4mysql.ReadThread$1.run(ReadThread.java:36)

at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-2" java.lang.NullPointerException

at com.excle.jxl4mysql.ReadUtil.read(ReadUtil.java:122)

at com.excle.jxl4mysql.ReadThread$1.run(ReadThread.java:36)

at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-5" java.lang.NullPointerException

at com.excle.jxl4mysql.ReadUtil.read(ReadUtil.java:122)

at com.excle.jxl4mysql.ReadThread$1.run(ReadThread.java:36)

at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-8" java.lang.NullPointerException

at com.excle.jxl4mysql.ReadUtil.read(ReadUtil.java:122)

at com.excle.jxl4mysql.ReadThread$1.run(ReadThread.java:36)

at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-7" java.lang.OutOfMemoryError: Java heap space

Exception in thread "Thread-6" java.lang.OutOfMemoryError: Java heap space

Exception in thread "Thread-3" java.lang.OutOfMemoryError: Java heap space

 

分享到:
评论

相关推荐

    多线程读取文件

    本文将围绕“多线程读取文件”这一主题,结合给定的标签“源码”和“工具”,深入探讨如何在Java等编程语言中实现这一功能,并提供一些实用的工具和技巧。 首先,我们了解为什么需要多线程读取文件。当处理大型文件...

    java多线程读取文件

    Java多线程读大文件 java多线程写文件:多线程往队列中写入数据

    易语言多线程读取大文本文件

    在“易语言多线程读取大文本文件”这个主题中,核心概念是多线程和文件I/O操作。多线程允许程序同时执行多个独立的任务,提高效率,尤其在处理大型文件时,可以将任务分割成多个部分,由不同的线程并行处理。这可以...

    Qt多线程读写大型文本文件项目

    3.读取的文件使用多线程处理,不影响显示界面正常操作; 4.读取过来的文件如有修改,需要保存修改部分; 5.读、写文件需要显示处理进度; 6.增加一个列表,用于展示文本文件的类型、大小、行数等。 一、功能列表 1....

    易语言多线程读取大文本文件源码

    本源码示例是关于如何在易语言中实现多线程读取大文本文件,这对于处理大量数据或长时间运行的任务尤其有用。以下将详细介绍这一技术及其应用。 首先,理解多线程的概念至关重要。在单线程环境中,程序按照顺序执行...

    VC++ 多线程文件读写操作实例

    VC++环境下编写的一个多线程文件读写操作的实例。简单的利用互斥变量、原子操作等技术实现多线程读写文件时的互斥,从而确保文件在操作过程中不会被破坏。例子并没有使用很多复杂的逻辑。适合刚接触多线程编程的新手...

    python多线程同步之文件读写控制

    在Python编程中,多线程同步对于文件读写控制至关重要,因为如果不加以控制,多个线程同时访问同一文件可能会导致数据不一致或者错误。这里我们将深入探讨如何在Python中使用多线程同步来确保文件读写的安全性。 ...

    QT多线程技术读取文档内容到程序里

    Qt Creator 多线程读取文件到程序显示 利用QT Creator多任务读取一个文档到程序里 为了防止直接读取文件里的内容太大而发生卡顿,于是多线程读取将更高效的解决这个问题。 效果图如下: 其中pro文件无需改动,...

    多线程通信读写文件

    在读取文件时,多线程可能带来性能提升,因为读操作通常是非阻塞的,多个线程可以并行读取文件的不同部分。然而,写操作通常需要原子性,即不能被中断,因此可能需要使用锁来保护。 此外,还可以使用信号量...

    多线程读取大文件

    本文将详细探讨多线程读取大文件的原理、实现方法以及其在实际应用中的优势。 首先,理解“多线程”这一概念是至关重要的。线程是操作系统分配CPU资源的基本单位,一个进程可以包含多个线程。在单线程环境下,程序...

    用多线程实现串口读写数据以及文件的读写

    本教程聚焦于如何利用多线程实现串口(Serial Port)读写数据及文件的读写操作,这对于理解和开发高效通信系统至关重要。 首先,我们要理解什么是串口通信。串口通信是一种基于串行数据传输的通信方式,它通过一条...

    多线程对文件读写操作(java)

    在Java编程中,多线程技术是提升程序执行效率的关键之一,特别是在进行文件读写操作时。本主题将深入探讨如何使用多线程来优化文件的读取和写入过程,以及需要注意的相关问题。 首先,我们需要理解单线程与多线程在...

    C#多线程读写sqlite

    当多线程环境对SQLite进行读写操作时,可能会引发数据竞争和并发问题,因此必须采取适当的同步策略来确保数据的一致性和完整性。 标题"**C#多线程读写sqlite**"涉及的主要知识点包括: 1. **多线程编程**:C#中的`...

    基于多线程和gdal类库的影像读写

    在IT领域,尤其是在地理信息系统(GIS)开发中,"基于多线程和gdal类库的影像读写"是一个关键的技术点。GDAL(Geospatial Data Abstraction Library)是一个强大的开源库,用于处理多种遥感和地图数据格式,包括TIFF...

    C++实现多线程文件复制.docx

    C++实现多线程文件复制 在文件复制过程中,多线程技术可以大大提高复制速度。下面将详细介绍C++实现多线程文件复制的知识点。 一、多线程文件复制的基本概念 多线程文件复制是指在文件复制过程中,使用多个线程...

    delphi 多线程 读取数据

    4. **数据处理**:线程读取数据后,可以进行必要的处理,例如解析、过滤或计算。处理的结果将被存储在临时变量或结构中,以备后续使用。 5. **更新界面**:由于线程操作可能会与UI交互,我们需要确保在主线程中更新...

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    多线程分别下载文件

    这个"多线程分别下载文件"的Demo是针对在ListView或GridView控件中实现的一项功能,允许用户选择多个文件进行并行下载,并且每个文件的下载进度可以在对应的列表项中实时更新,提供良好的用户体验。 首先,我们要...

    多线程全面遍历磁盘文件

    在遍历磁盘文件时,如果使用多线程,我们可以将磁盘的不同区域分配给不同的线程,这样就能并行地读取和处理文件,从而显著提高遍历速度。 实现多线程遍历磁盘文件,我们需要以下几个关键步骤: 1. **创建线程池**...

    qt多线程高效下载文件

    本项目"qt多线程高效下载文件"是基于Qt实现的一个实用工具,它利用多线程技术来提高文件下载的效率,特别是对于大文件或者需要同时下载多个文件的场景,这种多线程策略显得尤为重要。 在HTTP协议方面,它是互联网上...

Global site tag (gtag.js) - Google Analytics