`
tom_seed
  • 浏览: 318753 次
  • 性别: 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++环境下编写的一个多线程文件读写操作的实例。简单的利用互斥变量、原子操作等技术实现多线程读写文件时的互斥,从而确保文件在操作过程中不会被破坏。例子并没有使用很多复杂的逻辑。适合刚接触多线程编程的新手...

    linux下多进程多线程写文件

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

    java多线程读取文件

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

    多线程读取文件

    NULL 博文链接:https://kaobian.iteye.com/blog/1126621

    多线程通信读写文件

    多线程通信读写文件代码,根据其他的代码文档修改,用于学习多线程通信。

    java多线程读写文件示例

    主要介绍了java多线程读写文件示例,需要的朋友可以参考下

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

    多线程对文件读写操作(java),提高对文件读写效率。

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

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

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

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

    多线程写文件实现应用与性能测试

    使用办法 java -jar ThreadIOReadWriteTest.jar iowrite 4096 D:/1.txt C:/2.txt Usage: ThreadIOReadWriteTest ioread/iowrite 4096 dest1/source1 dest2/source2 ... java -jar ThreadIOReadWriteTest.jar io...

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

    vc++读取写入文件 读取写入文件 带进度条的文件读写 多线程读写文件 带进度条可停止的多线程读写文件

    java多线程文件传输

    java多线程文件传输 java多线程文件传输

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

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

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

    使用多线程实现同步读写的一个小程序,同时开启读线程和写线程。当写线程写入一个数字时,读线程读取该数字。

    delphi多线程 读写数据

    用独立的 TThread 单元 在同一个进程中 将 一份数据很多的文件 分成 两块 同事来读取。 提快速度。

    WINSOCK多线程传输文件

    WINSOCK多线程传输文件,效率高,速度快,

    Java实现多文件的文件的压缩和下载

    如果您想从服务器端下载多个文件,若按照传统的下载方式,这下载速度是非常慢的,我这里提供一个把所有需要下载的文件先压缩,后下载的完全解决方案。在此秀一下,工大家参考之用。

    qt多线程高效下载文件

    qt多线程下载文件的Demo,支持http协议,支持多任务下载

    多线程样例一 读写参数文件

    三,写文件(文件名为序号,如0.txt),文件夹File。 四,Sleep(600)。 五,记录日志:本函数开始执行 时间,结束时间,序号。 六,复制List到参数。 模拟图像处理函数: 一,复制参数 二,参数保存到文件,文件名...

Global site tag (gtag.js) - Google Analytics