当前位置:编程学习 > JAVA >>

啥叫Thread Confinement?

在看《Java Concurrency in Practice》,第三章Sharing Objects讲到可以通过thread confinement实现thread safety,也就是不共享数据。各位大神可不可以举个例子来细说下Thread Confinement。那个Ad-hoc Confinement没具体例子。 --------------------编程问答-------------------- 就是一个变量只能被特定的某个线程访问,其他线程都访问不到 --------------------编程问答-------------------- 貌似叫线程封闭,ThreadLocal应该就是这意思吧。。 --------------------编程问答--------------------
引用 1 楼  的回复:
就是一个变量只能被特定的某个线程访问,其他线程都访问不到

能不能举了具体的例子,没搞懂~~书上那个Stack Confinement就是没暴露局部变量,每个线程执行方法时都用自己的局部变量,线程执行完,栈销毁。 --------------------编程问答--------------------
引用 2 楼  的回复:
貌似叫线程封闭,ThreadLocal应该就是这意思吧。。

ThreadLocal是其中一种Confinement~~我也不熟悉ThreadLocal --------------------编程问答--------------------
引用 3 楼  的回复:
引用 1 楼  的回复:

就是一个变量只能被特定的某个线程访问,其他线程都访问不到

能不能举了具体的例子,没搞懂~~书上那个Stack Confinement就是没暴露局部变量,每个线程执行方法时都用自己的局部变量,线程执行完,栈销毁。


书中不是讲了三种 线程封闭 的方式嘛
1、栈封闭   就是方法中局部变量永远都是某个线程专用的
2、ThreadLocal 这玩意儿可以想象成类似于Map的行为,虽然底层不是map,key是线程对象,value是你想存的值,当从ThreadLocal get的时候,内部会调用Thread.currentThread获取当前线程对象,然后从“map”中获取之前存的值。所以你存的值,永远只会被存值的那个线程使用,其他线程获取不到
3、专设的线程封闭  这个是最脆弱的,因为从语言上没法保证,上面1,2都有语言特性来提供保障,但这个得由程序员自己去保证一个变量只被某个线程访问 --------------------编程问答-------------------- 如果对并发有兴趣,可加入229609257交流 --------------------编程问答-------------------- thread local
http://www.drdobbs.com/jvm/184405382 --------------------编程问答-------------------- 建议看中文版吧!否则会是在学习技术,还是在学习英文呢?
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,