/*multithreading in a single case-lazy type will have a multi-threading problem a hungry man type does not have multi-threading issues*///a hungry man typeclassSingle {Private Static FinalSingle S =NewSingle ();//final modified variables must be displayed for initialization PrivateSingle () {}//constructor privatization does not allow outsiders to create objects Public StaticSingle getinstance () {//The outside world can not create objects, then need to provide public access-the idea of encapsulation (hide implementation details, provide public access to external) returns; }}//Lazy TypeclassSingle2 {Private StaticSingle2 s =NULL; PrivateSingle2 () {} Public StaticSingle2 getinstance () {if(s = =NULL) {//Add double judgment in order to solve the efficiency problem, as long as one thread has finished creating the object, other threads do not need to judge the lock operation to improve efficiency synchronized(Single2.class) { if(s = =NULL) {s=NewSingle2 (); } } } returns; }}
java-Single-instance mode under multi-threading