近期,写了一段多线程的代码,主要想用多线程来解析一堆文件,这样比单线程要快;但是我还需要跟踪最后的结果,就是我主线程要hold住,直到各子线程都完毕了,再继续走;
如下:
CountDownLatch countDownLatchGroup = new CountDownLatch(sizeGroup);
for(int i=0;i<sizeGroup;i++){
ItemDumpThread thread = new ItemDumpThread(fineName,fileCount);
thread.start();
}
try {
countDownLatchGroup.await();
} catch (InterruptedException e) {
logger.error(e);
return false;
}
ok,没问题;
但是有一次,我不小心删除这段代码:
AtomicInteger fileCount;
String fileName;
public ItemDumpThread(
AtomicInteger fileCount,
String fileName,
){
this.fileName=fileName;
//this.fileCount=fileCount;删除了
}
public void run() {
logger.warn(destFile+"=>"+fileCount.incrementAndGet());//NPE...错误
}
这个错误,然后我主线程还继续等待,好像死锁一样。哎~~~
看来这种写法还是很危险~~~
分享到:
相关推荐
### 易语言多线程BUG支持库解析 #### 标题与描述理解 标题与描述均为“易语言多线程的BUG支持库”,这表明该文档主要关注的是易语言(一种面向中国用户的编程语言)在多线程环境下的错误处理和支持。易语言是一种...
Java 多线程编程是 Java 编程语言中一个非常重要的概念,它允许程序同时执行多个任务,以提高程序的执行效率和响应速度。在本文中,我们将深入浅出Java多线程编程的世界,探索多线程编程的基本概念、多线程编程的...
C#多线程学习(一) 本篇文章将深入探讨C#中的多线程机制,涵盖...本篇文章只是C#多线程学习系列的第一篇,接下来将继续探讨C#中的多线程机制,包括如何操纵一个线程、生产者和消费者、多线程的自动管理(线程池)等。
这里我们探讨的是一个利用多线程技术进行文件搜索的应用实例,名为"SearchDemo"。 首先,我们要理解多线程的概念。在单线程环境中,程序执行是顺序的,一次只能处理一个任务。而多线程则允许多个任务并发执行,这...
在多线程环境中,如果一个全局变量被多个线程同时读写,由于处理器调度的不确定性,可能导致数据不一致性和错误的结果。这种现象通常称为竞态条件,是多线程编程中的一个常见问题。 多线程是指一个进程中存在两个或...
在IT行业中,多线程是程序设计中的一个重要概念,特别是在处理并发操作时,如网络服务、数据处理和用户界面更新等。多线程允许程序同时执行多个任务,从而提高资源利用率和程序性能。本篇文章将重点探讨两种线程池...
多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...
多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...
这个"Delphi多线程源码(亲测无bug)"是一个非常适合初学者了解和学习多线程概念的资源。 首先,我们要理解什么是多线程。在单线程程序中,所有的任务都是按顺序执行的,而多线程则允许程序同时处理多个任务,提高...
首先,我们来看"1 多线程",这可能是一个介绍如何创建和启动线程的基础示例。在C#中,我们可以使用`System.Threading.Thread`类来创建新的线程。通过调用`Thread`类的构造函数传入一个委托(如`ThreadStart`或`...
在本场景中,我们讨论的是一个"SOCKET多线程接收文件"的系统设计,它允许多个客户机同时向服务器发送文件。尽管系统存在一些已知的BUG,但能够保证接收到的文件完整无缺,这表明它在并发处理和数据完整性方面具有...
在大数据处理中,可以将数据分片,每片数据在一个独立的线程中处理,加快计算速度;在游戏开发中,多线程可以实现游戏逻辑与渲染的分离,提高游戏流畅度。 使用这个模块,开发者需要注意线程安全问题。多线程环境下...
在本文中,我们将深入探讨如何在Qt5.12.9环境下使用多线程...虽然没有源码,但以上内容应该能为你提供一个使用Qt5.12.9进行多线程双缓冲串口通信的基本框架和理解。在实际项目中,你可以根据具体需求进行调整和优化。
// 解决线程中显示日志时,可能和主线程冲突的问题 if FLogShower <> nil then begin if GetCurrentThreadId = MainThreadID then begin ShowLog(Log, LogLevel); //显示日志到容器 end else begin ...
多线程&下载文件。是同时下载多个文件,不是断点续传。 第一次能成功下载。并且可以跳过已成功下载的文件。 但是如果开始后,停止,再次开始时会出错。必须关闭程序重开。 待修正版。慎下。 修正后提供完全版本。
标题中的“使用Java编写的一个简易多线程HTTP服务器”指的是一个使用Java编程语言实现的简单HTTP服务器,它利用了多线程技术来处理客户端的HTTP请求。在Java中,可以使用Socket编程接口来建立TCP连接,进而实现HTTP...
根据提供的文件信息,我们可以详细阐述关于POSIX多线程程序设计的知识点。知识点将围绕POSIX线程库(Pthreads)展开,包括线程的概念、创建和使用、同步机制、高级编程技巧、线程的安全性、以及POSIX标准的演进。 ...
Windows 下多线程实现矩阵相乘 在 Windows 平台上,使用多线程实现矩阵相乘可以大大提高计算效率。矩阵相乘是许多科学计算和机器学习算法的基础操作,因此如何高效地实现矩阵相乘是非常重要的。 矩阵相乘的基本...