精华帖 (8) :: 良好帖 (15) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-05-24
jindw 写道 weiqingfei 写道 其实两个本来就没有关系,我想楼主只是想说如何在多线程中活用ThreadLocal。
ThreadLocal的实现本来就比较简单,只是用线程来作为key来寻找本线程中所使用的一个实例,它解决的最主要的问题应该就是减少参数的传递。 说句没有意义的话,事实上。ThreadLocal实现中,作为key的不是线程,而是ThreadLocal本身。 从整体上来看好吧。 不要看到ThreadLocalMap的key是ThreadLocal,就认为寻找线程本地变量实例的key就是ThreadLocal了。 要知道每个线程都会持有一个ThreadLocalMap的实例,我说的key就是这个意思。 key只是找到目标的钥匙,不是只有map才有key。 |
|
返回顶楼 | |
发表时间:2007-05-24
weiqingfei 写道 jindw 写道 weiqingfei 写道 其实两个本来就没有关系,我想楼主只是想说如何在多线程中活用ThreadLocal。
ThreadLocal的实现本来就比较简单,只是用线程来作为key来寻找本线程中所使用的一个实例,它解决的最主要的问题应该就是减少参数的传递。 说句没有意义的话,事实上。ThreadLocal实现中,作为key的不是线程,而是ThreadLocal本身。 从整体上来看好吧。 不要看到ThreadLocalMap的key是ThreadLocal,就认为寻找线程本地变量实例的key就是ThreadLocal了。 要知道每个线程都会持有一个ThreadLocalMap的实例,我说的key就是这个意思。 key只是找到目标的钥匙,不是只有map才有key。 你的话也有道理,但是,说到这个细节,我还是要说一下,ThreadLocal要比我们简单的想象复杂的多,不单是一个变量存储,它的数据方Thread里面,很明显,在线程销毁时的清理任务。 可以说ThreadLocal是个系统级的API,比我们想象的要复杂一点。 |
|
返回顶楼 | |
发表时间:2007-05-24
jindw 写道 weiqingfei 写道 jindw 写道 weiqingfei 写道 其实两个本来就没有关系,我想楼主只是想说如何在多线程中活用ThreadLocal。
ThreadLocal的实现本来就比较简单,只是用线程来作为key来寻找本线程中所使用的一个实例,它解决的最主要的问题应该就是减少参数的传递。 说句没有意义的话,事实上。ThreadLocal实现中,作为key的不是线程,而是ThreadLocal本身。 从整体上来看好吧。 不要看到ThreadLocalMap的key是ThreadLocal,就认为寻找线程本地变量实例的key就是ThreadLocal了。 要知道每个线程都会持有一个ThreadLocalMap的实例,我说的key就是这个意思。 key只是找到目标的钥匙,不是只有map才有key。 你的话也有道理,但是,说到这个细节,我还是要说一下,ThreadLocal要比我们简单的想象复杂的多,不单是一个变量存储,它的数据方Thread里面,很明显,在线程销毁时的清理任务。 可以说ThreadLocal是个系统级的API,比我们想象的要复杂一点。 其实用来区别线程间实例的key是线程本身,用来区分线程内部实例的key是ThreadLocal,因为每个线程不止一个内部实例。至于清理工作,那就是线程退出时清除对ThreadLocalMap引用,自然也就释放了实例。 你说的复杂指的是? |
|
返回顶楼 | |
发表时间:2007-05-24
糟糕的理解,糟糕的例子,基本同意birdGu的意见,不配评良好。
|
|
返回顶楼 | |
发表时间:2007-05-24
终于找到详细的ThreadLocal介绍了
|
|
返回顶楼 | |
发表时间:2007-05-24
汗。。。如果有其它的建议先看看别的。。
这翩文章很有争议性。 |
|
返回顶楼 | |
发表时间:2007-05-25
XMLDB 写道 LZ把概念搞错了,ThreadLocal就是ThreadLocal,和同步完全没有关系。
ThreadLocal解决的是同一个线程内的资源共享问题,而synchronized 解决的是多个线程间的资源共享问题,两个问题没有可比性。 lz的文章并没有去讨论ThreadLocal就是ThreadLocal有什么关系,只是在说如何保证多线程环境下对共享资源访问的数据安全。文章看完了,简单明了,很到位,是篇好文章。 |
|
返回顶楼 | |
发表时间:2007-05-25
不管怎么样,楼主还是蛮努力的,辛苦了
|
|
返回顶楼 | |
发表时间:2007-05-25
spiritfrog 写道 XMLDB 写道 LZ把概念搞错了,ThreadLocal就是ThreadLocal,和同步完全没有关系。
ThreadLocal解决的是同一个线程内的资源共享问题,而synchronized 解决的是多个线程间的资源共享问题,两个问题没有可比性。 lz的文章并没有去讨论ThreadLocal就是ThreadLocal有什么关系,只是在说如何保证多线程环境下对共享资源访问的数据安全。文章看完了,简单明了,很到位,是篇好文章。 麻烦你解释一下,ThreadLocal是怎么“保证多线程环境下对共享资源访问的数据安全”的?ThreadLocal使各个线程使用各自不同的数据,这种情况下哪来的“共享资源”? |
|
返回顶楼 | |
发表时间:2007-05-25
楼主申诉后俺才评的新手帖.
不过没想... |
|
返回顶楼 | |