`
tom_seed
  • 浏览: 322120 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

多线程写文件

 
阅读更多
public class FileWriteThread implements Runnable {
	
	
	 /**    */
	private static final String SPLIT = "|";

	private String name;

	private OrderManager orderManager;
	
	private long startItem;
	
	public FileWriteThread(String name, OrderManager orderManager, long startItem){
		this.name = name;
		this.orderManager = orderManager;
		this.startItem = startItem;
	}
	
	/**
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {
		OrderQuery query = new OrderQuery();
		long firstItem = startItem*100000 + 1;
		long lastItem = (startItem+1)*100000;
		query.setFirstItem(firstItem);
		query.setLastItem(lastItem);
		List<Order> orders = orderManager.selectWithPage(query);
		File file = new File("D://1.txt");
		if(!file.exists()){
			try {
				file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		BufferedWriter bufferwriter = null;
		FileWriter filewriter = null;
		StringBuilder sb = new StringBuilder();
		try {
			filewriter = new FileWriter(file, true);//Append
			bufferwriter = new BufferedWriter(filewriter);
			for(Order order: orders){
				sb.append(name).append(SPLIT).append(order.getCardNo()).append(SPLIT)
				.append(order.getFundAccount()).append(SPLIT).append(order.getMisId())
				.append(SPLIT).append(order.getName()).append(SPLIT).append(order.getOrderAmount())
				.append(SPLIT).append(order.getStatus());
				bufferwriter.write(sb.toString());
				bufferwriter.newLine();
				sb.delete(0, sb.length());
			}
			bufferwriter.flush();//刷新流
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				bufferwriter.close();
				filewriter.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	public void setOrderManager(OrderManager orderManager) {
		this.orderManager = orderManager;
	}

	public void setStartItem(long startItem) {
		this.startItem = startItem;
	}
}

 

调用端:

@Controller
@RequestMapping("/thread")
public class ThreadPool {
	
	@Autowired
	private OrderManager orderManager;
	
	@RequestMapping("/pool")
	public void pool(ModelMap model) {
		ExecutorService pool = Executors.newSingleThreadExecutor();
		long start = System.currentTimeMillis();
		for(int i=0; i<20; i++)
			pool.execute(new FileWriteThread("线程"+(i+1), orderManager, i));
		System.out.println(System.currentTimeMillis()-start);
	}

}

 

分享到:
评论

相关推荐

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

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

    多线程读取文件

    在IT领域,多线程是并发处理任务的关键技术,尤其在读取大文件时,能够显著提高程序的执行效率。本文将围绕“多线程读取文件”这一主题,结合给定的标签“源码”和“工具”,深入探讨如何在Java等编程语言中实现这一...

    java多线程读写文件示例

    Java多线程读写文件示例 Java多线程读写文件示例是指在Java编程语言中使用多线程技术来实现文件的读写操作。该示例主要介绍了如何使用Java多线程技术来实现文件的读写操作,包括文件的写入、读取和同步控制等。 ...

    linux下多进程多线程写文件

    代码目的是比较write和printf多路写性能。首先fork生成子进程,并且在子进程中重定向标准输出;然后在父子进程中各创建10个线程分别利用printf和write进行写操作;最后通过返回值比较两者性能。

    多线程通信读写文件

    通过选择合适的同步机制,合理调度线程,以及正确处理异常和资源管理,我们可以构建出高效且可靠的多线程文件操作程序。学习和实践这些概念对于任何IT专业人员来说都是必要的,无论是在服务器端开发、大数据处理还是...

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

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

    java多线程读取文件

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

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

    2. **线程安全的文件操作**:在进行多线程文件操作时,线程安全是非常重要的。如果不正确地同步线程,可能会导致数据不一致或者丢失。Java提供了一些同步机制,如`synchronized`关键字、`Lock`接口(如`...

    有进度条多线程的写入文件

    在这个场景下,我们关注的是如何在VC++环境下实现一个带进度条的、支持多线程的文件读写功能,并且这个功能还需要具备可停止的能力。这是一个涉及到多线程编程、文件I/O操作、用户界面交互以及同步控制等多个知识点...

    对Python多线程读写文件加锁的实例详解

    Python的多线程在io方面比单线程还是有优势,但是在多线程开发时,少不了对文件的读写操作。在管理多个线程对同一文件的读写操作时,就少不了文件锁了。 使用fcntl 在linux下,python的标准库有现成的文件锁,来自于...

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

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

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

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

    一个多线程同步读写的小程序

    特别是在处理I/O密集型任务(如读写文件)时,多线程可以显著提升性能。在这个“一个多线程同步读写的小程序”中,我们看到开发者尝试通过创建读线程和写线程来同时进行数据的读取和写入,以优化程序的执行流程。 ...

    java多线程文件传输

    Java多线程文件传输是Java编程中一个重要的实践领域,特别是在大数据处理、网络通信和分布式系统中。在Java中,多线程可以提高程序的执行效率,尤其在处理并发任务时,如大文件的上传、下载和传输。下面将详细探讨...

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

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

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

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

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

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

    多线程分别下载文件

    在Android开发中,多线程技术常常用于提升应用程序的性能,特别是在处理耗时操作,如文件下载时。这个"多线程分别下载文件"的Demo是针对在ListView或GridView控件中实现的一项功能,允许用户选择多个文件进行并行...

    C# 高效线程安全,解决多线程写txt日志类.zip

    "C# 高效线程安全,解决多线程写txt日志类.zip" 提供了一个专门用于多线程环境下写入txt日志文件的解决方案,确保了在并发写入时的数据一致性与程序稳定性。 首先,我们要理解什么是线程安全。线程安全是指当多个...

Global site tag (gtag.js) - Google Analytics