博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程并发-栈限制&ThreadLocal
阅读量:4564 次
发布时间:2019-06-08

本文共 1196 字,大约阅读时间需要 3 分钟。

栈限制(也称线程内部或者线程本地用法)是线程限制的一种特例,在栈限制中,只能通过本地变量才可以触及对象。正如封装使不变约束更容易被保持,本地变量使对象更容易被限制在线程本地中。

本地变量本身就被限制在执行线程中;它们存在于执行线程栈。其他线程无法访问这个栈。

public int loadTheArk(Collection
candidates) {
SortedSet
animals; int numPairs = 0; Animal candidate = null; // animals被限制在方法中,不要让它们溢出 animals = new TreeSet
(new SpeciesGendarComparator()); animals.addAll(candidates); // .................... }

ThreadLocal是一种维护线程限制更加规范的方式,它允许将每个线程与持有数值的对象关联在一起。ThreadLocal提供了get和set访问器,为每个使用它的线程维护一份单独的拷贝。

所以get总是返回由当前执行线程通过set设置的最新值。

ThreadLocal变量通常用于防止在基于可变的单体(Singleton)或全局变量的设计中,出现共享。比如说,一个单线程化的应用程序可能会维护一个全局的数据库连接,这个Connection

在启动时就已经被初始化了。这样就可以避免为每个方法都传递一个Connection。因为JDBC规范并未要求Connection自身一定是线程安全的,因此,如果没有额外的协调时,使用全局变量

的多线程应用程序同样不是线程安全的。通过利用ThreadLocal存储JDBC链接,每个线程都会拥有属于自己的Connection。

private static ThreadLocal
connectionHolder = new ThreadLocal
(){
public Connection initialValue() {
return DriverManager.getConnection(DB_URL); } }; public static Connection getConnection() {
return connectionHolder.get(); }

  

  

转载于:https://www.cnblogs.com/buaixianchen/archive/2011/09/15/2177842.html

你可能感兴趣的文章
2、文件夹
查看>>
11、求二进制中1的个数
查看>>
【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理结果适配篇(7/8)...
查看>>
CodeForces 731A Night at the Museum
查看>>
MySQL 删除数据库
查看>>
JavaScript 字符串(String) 对象
查看>>
How to use VisualSVN Server and TortoiseSVN to host your codes and control your codes' version
查看>>
微信小程序picker组件 - 省市二级联动
查看>>
Dynamics CRM 给视图配置安全角色
查看>>
Eclipse修改已存在的SVN地址
查看>>
(转)使用 python Matplotlib 库绘图
查看>>
进程/线程切换原则
查看>>
正则表达式语法
查看>>
20165301 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Vue的简单入门
查看>>
urllib 中的异常处理
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
20181227 新的目标
查看>>
androidtab
查看>>
php 事件驱动 消息机制 共享内存
查看>>