Java多线程写文件

Java程序员必备!java多线程并行写csv文件 前言 作为一个典型的分布式项目,Kubernetes 的部署一直以来都是挡在初学者前面的一只“拦路虎”。尤其是在 Kubernetes 项目发布初期,它的部署完全要依靠一堆由社区维护的脚本。 其实,Kubernetes 作为一个 Golang 项目,已经免去了很多类似于 Python 项目要安装语言级别依赖的麻烦。但是,除了将各个组件编译成二进制文件外,用户还要负责为这些二进制文件编写对应的配置文件、配置自启动脚本,以及为 kube-apiserver 配置授权文件等等诸多运维工作。 这几年,在跟朋友探讨 阅读详情

用多线程对文件进行读写效率要比用循环进行读写要给许多,接下来以创建100个文件并且写入字符串来测试。

首先用循环的方式进行:

public class FileMany {
	static int name=200;
	public static void main(String[] args) throws IOException {
		long start = System.currentTimeMillis();
			for(int i=0;i<100;i++) {
				FileOutputStream out = new FileOutputStream(name+".txt");
				name+=1;
				FileChannel channel = out.getChannel();
				ByteBuffer buffer  = ByteBuffer.wrap(new String("lplp").getBytes());
				channel.write(buffer);
				channel.close();
			}
			long end = System.currentTimeMillis()-start;
			System.out.println(end);

	}

}

输出:140

多线程:

public class FileByThread implements Runnable{
	static int name=1;
	/*用同步锁是为了让文件名有序*/
	Lock lock;
	public FileByThread(Lock lock) {
			this.lock=lock;
	}

	@Override
	public void run() {
		try {
			lock.lock();
			FileOutputStream out = new FileOutputStream(name+".txt");
			name+=1;
			/*获得文件通道*/
			FileChannel channel = out.getChannel();
			/*创建一个字节缓冲区,将要写入文件的字符串放到该缓冲区*/
			ByteBuffer buffer = ByteBuffer.wrap(new String("jdjjd").getBytes());
			/*写入文件*/
			channel.write(buffer);
			/*关闭文件通道*/
			channel.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			lock.unlock();
		}
		
	}
	public static void main(String[] args) throws IOException {
			/*创建一个容量为20的线程池*/
			ExecutorService executorService = Executors.newFixedThreadPool(100);
			Lock lock = new ReentrantLock();
			/*或得程序开始执行的时间*/
			long start = System.currentTimeMillis();
			for(int i=0;i<100;i++) {
				executorService.submit(new FileByThread(lock));
			}
			/*得到跑完整个程序所需要的时间*/
			long end = System.currentTimeMillis()-start;
			System.out.println(end);

	}
}

输出:11

对比可见多线程效率高出许多


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

相关推荐

高通8155车机系统里,安卓和QNX是怎么‘打电话’的?聊聊HAB通信框架那些事

本文深入解析了高通8155车机系统中HAB通信框架如何实现安卓与QNX的高效协同。作为异构系统的通信桥梁,HAB通过共享内存和中断信号机制,在多媒体数据传输中展现出零拷贝、硬件加速等优势,成为智能座舱实现实时性与生态丰富性平衡的关键技术。

weixin_42715608的博客 386

java 多线程读取txt_关于Java多线程读取txt文本的一些想法

原需求大概如下:有多个txt英语文本待处理,处理过程为读取文本内容,计算最相似的两个单词的相似度并将结果按照文件原本的顺序将结果写入到一个存放结果的txt文件中。因为文本数量较多,每个文本处理所需时间不短,所以我考虑使用多线程来提高效率。话不多说,讲讲我的思路:首先确定线程数量,因为我电脑四核八线程,所以我就打算用不多于八个线程来处理文本。然后因为线程执行顺序是不定的,执行时间也是不定的,所以我的...

weixin_32434033的博客 1110

OpenEuler22.04 快速部署Docker:华为云镜像源配置指南

本文详细介绍了在OpenEuler 22.04系统上快速部署Docker的完整流程。针对系统默认源版本老旧的问题,重点讲解了如何配置华为云镜像源以加速安装,并涵盖Docker引擎、Docker Compose的安装、服务启动验证、权限配置、镜像加速等核心步骤与常见问题排查,帮助用户高效搭建稳定的容器化开发环境。

http9protocoller的博客 174

Linux多线程实现文件读写操作—copy

Linux使用多线程实现文件的复制——copy,对文件进行读取,写入操作!

2201_76058089的博客 2037

使用3d Slicer标注病灶并生成ROI掩膜

本篇博客给大家演示一下如何使用3d Slicer标注病灶并生成ROI掩膜,供深度学习模型训练使用。 关于3d Slicer和MRIcron的安装请看我的另一个帖子。 一、数据加载 你可以使用你手头的数据进行标注,这里为了示例方便,我是用的3d Slicer中给出的Sample Data中的MRBrainTumor1的数据。 二、病灶标注及保存 Modules选择Segment Editor: 然后点击Add按钮添加一个Segment,在下方便签上双击可以修改Segment的命名和颜色等。下方三个按钮

Su_Del的博客 1万+

当AI换脸遇上内容审核:Facefusion NSFW检测的技术伦理与用户自主权之争

本文探讨了Facefusion开源AI换脸工具中NSFW检测机制的技术伦理困境与用户自主权之争。分析了其多层次防御机制的技术实现与社区规避方法,揭示了开源软件在安全与自由之间的平衡难题,并提出了分层权限设计等社区实践方案。

weixin_29165725的博客 699

多线程向一个文件中写数据

最近被问到Log4j如何通过多个线程向一个文件中写入数据,当时没有一点头绪, 因为用过windows记事本的小伙伴都知道,当一个记事本文件被同时打开多次,并且每个都修改,那么只会保留第一次打开的内容,这就是互斥锁的机制吧。  具体场景:三个线程分别读取三个文件a,b,c 并向d文件中写入 现在想起来两个方案给小伙伴分享一下: 第一种(不可行)使用IO流复用,就是多个线程共用一个IO流

c_wangbin的博客 2万+

DFRobot MGC3130电容式手势传感器库深度解析

电容式近场感应(Electric Near Field Sensing)是一种非接触、抗干扰的三维空间感知技术,其原理基于人体介电特性对高频电场的扰动响应,具备低功耗、高鲁棒性与零物理接触等核心优势。该技术广泛应用于医疗人机交互、工业HMI、智能家电等对可靠性与环境适应性要求严苛的嵌入式场景。DFRobot_MGC3130库正是面向Microchip MGC3130芯片的工程化实现,封装了I²C驱动、ASU硬件加速调度及多层抽象API,支持手势识别、触控检测与接近唤醒等功能动态切换。结合电容式近场感应与嵌入

weixin_34620658的博客 552

java多线程读写文件

一、引言    使用java读写文件是日常工作中需要经常使用的技术。为了提高文件写出分析和写出效率,本文采用多线程实现多文件解析和写出。具体实现如下:二、文件读写工具类package com.test.multiThreadsReadFile.utils; import java.io.BufferedReader; import java.io.File; import java.io.Fil...

hbgengfei11的博客 2698

Autosar中CAN信号传输的模块化解析与实战应用

本文深入解析了AUTOSAR架构下CAN信号传输的模块化流程,详细阐述了从应用层软件组件(SWC)到COM模块打包、PduR路由、CanIf硬件抽象直至Can Driver驱动的完整“流水线”。文章通过实战案例,重点说明了模块化设计如何实现解耦与可移植性,并提供了关键模块配置要点与调试技巧,旨在帮助开发者构建高可靠、实时的车载通信系统。

g9h0i1的博客 902

智能车图像处理9-进阶篇1--中线的提取

(1)10-50行 基础扫线 (2)56-71 断行0 ,就是比如遇到十字,十字路口下方 第一次断线的地方。 (3)83-124 按照原先有效行,拟线作为中值,然后从中值向左右扫线,同时计算赛道宽度。 (4)125-138 如果出现赛道宽度小于先前有效行,则找到二次扫线的起点,从二次扫线起点处,继续向下扫线,直至结束,同时记录最后的有效行。 (5) 310-- 最后计算左右边线类似于方差的值,用于环岛的判断 ***这里着重描述一下二次扫线,希望大家可以理解的深刻

taiyuezyh的博客 1万+

java 多线程写入文件处理

# 1. ***多线程的配置文件 AsyncConfiguration*** /** @author lsx @Classname Async## 标题Configuration @Description TODO @Date 2022-03-21 16:39 */ @Configuration @EnableAsync public class AsyncConfiguration { @Bean("doExecutor") public Executor doE.

qq_39994174的博客 2819

Hermes接入IMA知识库全攻略:将知识库装进你的Hermes智能体

本文详细介绍了如何将IMA知识库功能接入Hermes Agent平台,实现一站式笔记管理和知识库操作。主要内容包括:获取IMA访问凭证、下载技能包、配置凭据(支持文件和环境变量两种方式)、验证配置有效性,以及实际应用演示(查询知识库列表、创建笔记并添加到知识库)。文章还提供了常见问题解决方案,如认证失败处理、版本更新等。通过该集成,用户可在Hermes中直接调用IMA的笔记创建、知识库管理等强大功能,提升工作效率。

小石头的专栏 642

java多线程写文件_Java 多线程写文件

不废话,上马。import java.io.File;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.channels.FileChannel;import java.nio.channels.FileLock;/*** @author DBJ**/public class MyThreadInf...

weixin_36290287的博客 674

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java多线程 同时写一个文件

我整理的一些关于【数据】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1Java多线程同时写一个文件 在软件开发中,多线程编程是一个重要的主题,尤其在需要提升程序性能和响应能力的场景中更是如此。Java作为一种广泛使用的编程语言,提供了强大的多线程支持。然而,当多...

weixin_36246576的博客 854

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java实现多线程写数据到文件【队列-文件】

大致流程先将要写入文件的数据写入到一个队列中,然后单开一个线程专门读取队列数据写入文件,可以保证写入到文件的数据的顺序,生产者类即多线程写入文件模拟package com.ldl.test.domain; import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Concurrent...

Liam1994的博客 1万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java 写文件 保证线程_java多线程读写文件示例

package com.ysh.file;import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.co...

weixin_28685483的博客 166

多线程写文件 java_java两个线程同时写一个文件

本文实例为大家分享了java两个线程同时写一个文件的具体代码,供大家参考,具体内容如下1.多线程线程是程序执行流的最小单元。是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在...

weixin_42522964的博客 2340

java多线程写文件,出现脏数据。

多线程写文件是会有冲突的,会有脏数据,所以我们要给写文件的代码加上锁。 具体流程在以前代码基础上加上锁代码: FileOutputStream fos = new FileOutputStream(file, true); FileChannel fc = fos.getChannel(); while(true){ try{ lock = fc.tryLock(); }catch (OverlappingFileLockException e){

qqnbsp的博客 1231

java多线程写文件

  // 题目: 多线程写文件 /** 有四个线程1、2、3、4。线程1的功能就是输出A,线程2的功能就是输出B,以此类推......... 现在有四个文件file1,file2,file3, file4。初始都为空。 现要让四个文件呈如下格式: file1:A B C D A B.... file2:B C D A B C.... file3:C D A B C D.... ...

hello world 605

多线程写文件 java_Java 多线程写文件

起因朋友有一个大的文件,需要把里面的格式做转换后重新生成一个新的文件,然后用matlab做一些数据处理,但是说做这个数据格式转换的时候过程十分慢,而且跑了好几个小时都没搞好,我一看文件大小300m,就自信满满的说我来帮你搞定。过程拿到文件之后格式是这样的image我看了一下这个数据大概将近5百万条,都需要转换成这种格式image我以为数据大小没有关系,就直接跑了一个单线程做所有的事情,一行一行读出...

weixin_39970689的博客 692

多线程写文件保证顺序_java中如何保证多线程顺序执行

如何保证多线程顺序执行代码:public class ThreadDemo { static Thread threadA = new Thread(()->{ System.out.println("线程A"); });​ static Thread threadB = new Thread(()->{ System.out.println("线程B"); }); static T...

weixin_39748928的博客 879

JAVA多线程之两个线程同时写一个文件

1.多线程    线程是程序执行流的最小单元。是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态。就绪状态是指线程具备

qq_32971807的博客 2万+

多线程写文件 java_java控制多线程同时写一个文件

一、缘起最近出现一个需求,大体要做的就是控制多线程同时操作一个文件。当时第一个反应是不要用synchronized,太low了,然后我就使用了读写锁ReentrantReadWriteLock,然后写完静下来和业务结合在一起分析一下,结果尴尬了。因为文件名可能是别的线程刚刚生成的带上了时间戳,线程A写orders_201904171130.xls文件,线程B写orders_201904171131...

weixin_35799770的博客 734
上一篇: Java多线程中的CyclicBarrier
下一篇: Java集合类
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值