`

threadpool的使用

    博客分类:
  • java
阅读更多

    最近在项目中碰到一个这样的需求,需要对约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 

    

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics