单例的构造器是private的,不能直接用new 创建对象.static虽然可以随时使用,但是还是有被重新创建的可能. 举个例子,你希望任何时候有一个class A的实例就可以了class B { static A a = new A();}这样以后所有代码大家都可以使用B.a来调用A里的方法. 但是可能在class C里class C { public void getA { A a =new A(); }} 这个时候整个工程下出现了2个A的对象已经违背了你当初的设计,
一.ThreadLocal 使用wait/notify方式实现的线程安全,性能将受到很大影响.解决方案是用空间换时间,不用锁也能实现线程安全. 来看一个小例子,在线程内的set.get就是threadLocal public class ConnThreadLocal { public static ThreadLocal<String> th = new ThreadLocal<String>(); public void setTh(String value){ th.set(