【转】什么是ThreadLocal?
public class JDBCContext{ private static Logger logger = Logger.getLogger(JDBCContext.class); private DataSource ds; protected Connection connection; private boolean isValid = true; private static ThreadLocal jdbcContext; private JDBCContext(DataSource ds){ this.ds = ds; createConnection(); } public static JDBCContext getJdbcContext(javax.sql.DataSource ds) { if(jdbcContext==null)jdbcContext=new JDBCContextThreadLocal(ds); JDBCContext context = (JDBCContext) jdbcContext.get(); if (context == null) { context = new JDBCContext(ds); } return context; } private static class JDBCContextThreadLocal extends ThreadLocal { public javax.sql.DataSource ds; public JDBCContextThreadLocal(javax.sql.DataSource ds) { this.ds=ds; } protected synchronized Object initialValue() { return new JDBCContext(ds); } }}?
使用单例模式,不同的线程调用getJdbcContext()获得自己的jdbcContext,都是通过JDBCContextThreadLocal 内置子类来获得JDBCContext对象的线程局部变量,这个变