最近在项目中碰到一个这样的需求,需要对约50条以上的数据,做批量处理。而每条数据的处理,都需要远程调用一次接口。因此想到了使用多线程来完成。
对多线程没有太多的经验,参考一下他人的代码和设计
1.threadpool
2. java.util.concurrent.CoutDownLatch
可以参考例子http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/CountDownLatch.html
这个例子中,有个疑惑,在driver中,startSignal和doneSignal
是作为method的形式参数传递给另外一个线程worker的。
在例子中,可以看到在driver中,修改startSignal,worker中的startSignal同样会受到影响。
这样就有了疑问,startsignal 其实是作为thread的私有变量的,这样,应该是driver线程和worker线程各维持一份的。但是在例子中的情况,是因为
1.传递的是对象,所以实际传递的是地址?
这样的现象一般在调用函数式,传入形参为对象时发生。对目标对象进行修改,内存中的数据也会改变,使得原始对象中的值也发生改变。但是一般大家都不提倡这样做,而在源码中发生这种情况,不太可能。
另外,此处传递参数的方式,不是原始对象,传递给内部的某个mothod,而是传递给另外一个线程。。。
写个代码验证一下,在线程中传递对象是否和以method方式传递对象类的形参一样。
2.A synchronization aid ???
【valotile,sycnonized】
CoutDownLatch is an A synchronization aid.
await
相关推荐
c#的ThreadPool使用笔记.pdf
可以使用python语言自己实现线程池,或者可以使用第三方包threadpool线程池包,本主题主要介绍threadpool的使用以及其里面的具体实现。 1、安装 使用安装: pip installthreadpool 2、使用 (1)引入threadpool...
threadpool实现方式 threadpool实现方式 threadpool实现方式
一个易于使用的C ++ 11线程池。 使用ThreadPool类对自由函数进行排队,并使用std :: for_each()和std :: transform()的并行版本。 可配置为仅用于标头或与库一起使用。 有许多用法示例。
ThreadPool 线程池管理单元 带调用例子
threadPool的实现代码
javascript ThreadPool
java线程池threadpool简单范例,使用threadgroup类
使用Boost库,Threadpool线程池的使用,包括优先级任务处理,普通任务处理!
boost threadpool-0_2_5-src ,修复内存泄露后的版本 boost threadpool-0_2_5-src ,修复内存泄露后的版本
threadpool线程池学习
一个VC++ThreadPool程序,结构清晰,程序优先,注释详细,方便使用!
C++11 线程池 ThreadPool 单例 线程池,实现全局唯一。
delphi版线程池调用,这个小项目网上实例很容易找到,对delphi初学者而言,仔细跟中调用步骤,更能理解实现。
利用线程池来ThreadPool.QueueUserWorkItem来处理多线程问题,本人也是初学着,欢迎大家多多来探讨多线程的技术问题..
线程池threadpool_src,非常实用的线程池代码,好用方便!