怎么实现一个线程安全类
提到线程安全,大家都想到用synchonized关键字,其实还有另一种方法,就是ThreadLocal,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。
下面来看一个hibernate中典型的ThreadLocal的应用:
1.private static final ThreadLocal threadSession = new ThreadLocal(); 2. 3.public static Session getSession() throws InfrastructureException { 4. Session s = (Session) threadSession.get(); 5. try { 6. if (s == null) { 7. s = getSessionFactory().openSession(); 8. threadSession.set(s); 9. } 10. } catch (HibernateException ex) { 11. throw new InfrastructureException(ex); 12. } 13. return s; 14.}