脚本宝典收集整理的这篇文章主要介绍了

学习三

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

线程封闭

 当访问共享的可变数据时,通常需要使用同步。一种避免使用同步的方式就是不共享数据。如果仅在单线程内访问数据,就不要同步。这种技术成为线程封闭(Thread Confinement)。

Ad-hoc 线程封闭

Ad-hoc 线程封闭是指维护线程封闭的职责完全是由程序自己来承担。

栈封闭

栈封闭是线程封闭的一种特例,在栈封闭中,只能通过局部变量才能访问对象。

ThreadLocal类

ThreadLocal提供了setget等访问接口或方法,这些方法为每个使用该变量的线程都存有一份独立的副本,因此get总是返回由当前执行线程在调用set设置的最新值。  
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;  /**  * ConnectionDispenser  * <p/>  * Using ThreadLocal to ensure thread confinement  *  * @author Brian Goetz and Tim Peierls  */ public class ConnectionDispenser {     static String DB_URL = "jdbc:mysql://localhost/mydatabase";      private ThreadLocal<Connection> connectionHolder             = new ThreadLocal<Connection>() {                 public Connection initialValue() {                     try {                         return DriverManager.getConnection(DB_URL);                     } catch (SQLException e) {                         throw new RuntimeException("Unable to acquire Connection, e");                     }                 };             };      public Connection getConnection() {         return connectionHolder.get();     } }

不变性

满足同步需求的另一种方法是使用不可变对象。1,对象创建以后其状态就不能修改。2,对象的所有域都是final类型。3,对象是正确创建的。

Final域

关键字final可以视为C++中const机制的一种受限版本,用于构造不可变对象。 (引用不可变,引用的对象是可变的)

总结

以上是脚本宝典为你收集整理的

学习三

全部内容,希望文章能够帮你解决

学习三

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过