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

多线程的一个bug

 
阅读更多

近期,写了一段多线程的代码,主要想用多线程来解析一堆文件,这样比单线程要快;但是我还需要跟踪最后的结果,就是我主线程要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支持库

    多线程操作实例源码,,

     多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...

    多线程操作实例源码

     多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。...

    csharp多线程示例(全)

    csharp多线程示例(全),根据网上教材重写的示例代码,纠正了教材上面的一些小Bug

    多线程&下载——有BUG版(慎下)

    多线程&下载文件。是同时下载多个文件,不是断点续传。 第一次能成功下载。并且可以跳过已成功下载的文件。 但是如果开始后,停止,再次开始时会出错。必须关闭程序重开。 待修正版。慎下。 修正后提供完全版本。

    JAVA SWING 多线程实现扫描同一个网段的IP,以及选定IP的端口

    已知bug:文字输出有时不能正确换行"&gt;用了一个礼拜时间做了一个端口扫描程序 从扫描同一个网段的IP开始 逐步添加功能 现在还具有了扫描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 ...

    MFC多线程电梯模拟

    通过多线程技术实现对电梯的实时模拟。分为主线程和电梯逻辑线程,主线程控制界面,接收按键信息;...我刚开始学习多线程编程,这个是个习作,如果发现BUG请与我联系,谢谢。 songchaoxx@126.com QQ:182092252

    利用idhttp进行多线程下载 修正版

    昨天发的代码发现一个bug,就是无论几线程,都是从文件首部开始下载,才发现xe7下idhhtp控件的IdHttp.Response.ContentRangeStart 和 IdHttp.Response.ContentRangeEnd 属性不起作用。(delphi 7好像可以)修改了一下...

    SOCKET多线程接收文件

    SOCKET多线程接收文件,可以多个客户机向服务器发文件,有点BUG。不过收到的文件是完整的

    c# 多线程蜘蛛爬虫

    3.整个spider的开发过程为增量式,从最开始的单页搜索url到最后的多线程spider,这在版本规划中又很明显的体现。每个版本都有自己的readme,其中详细叙述了各个版本的不同 4.由于是初学者,我在每个版本中都是边写边...

    MFC创建多线程(工作者线程)demo

    如标题,在MFC中必须使用 AfxBeginThread创建多线程,如使用BeginThread可能会出现BUG

    多线程同时操作全局变量的出错演示

    多线程同时操作全局变量的出错演示:演示了9个线程同时操作全局变量的出错结果,并采用自动验证结果,直到程序出错,有很好的演示和学习价值。

    多线程程序模拟(不在任何操作系统下运行).

    这里只是演示一下多线程的切换技术和思想,代码存在许多bug,由于cpu的速度问题,可能存在各种显示乱码问题 大家可以修改延时代码段来解决问题。 上传这段代码主要目地:我建了一个汇编初级算法群,大家有兴趣欢迎...

    使用Java编写的一个简易多线程HTTP服务器

    使用Java编写的一个简易多线程HTTP服务器 源代码写于2018年5月份,计算机网络课程的实验作业 代码bug较多,欢迎各位dalao指教

    Delphi多线程查找文件工具(源码)

    用Delphi XE6及以上版本编译,本工具是一个利用多线程查找Windows磁盘中文件,并记录用时,一个小工具 若发现修复Bug请私信

    delphi日志类TLogger 修复多线程显示的bug

    // 解决线程中显示日志时,可能和主线程冲突的问题 if FLogShower &lt;&gt; nil then begin if GetCurrentThreadId = MainThreadID then begin ShowLog(Log, LogLevel); //显示日志到容器 end else begin ...

    Android多线程断点下载

    自己写的Android多线程多任务断点下载的一个Demo。 1.通过Service和线程池配合控制下载任务(包含分段下载)的开始和暂停; 2.通过数据库对文件信息以及下载线程信息进行保存,实现断点下载。 有发现的bug希望各路坛...

    c# Task 多线程管理 废除了,不要下载,有bug

    删除了,这个有bugde MutilTask 多线程demo。支持 Start 启动,Stop停止,Pause暂停,Continue 恢复。支持线程数量控制。

Global site tag (gtag.js) - Google Analytics