//Thread-safe Singleton class with synchronized getInstance()
class singleton{
private static singleton instance;
private singleton(){
System.
out.
println("An instance is created"); }
public static synchronized singleton getInstance(){
if(instance == null)
{
instance=new singleton();
}
return instance;
}
void method()
{
System.
out.
println("successfully executed!"); }
}
public class Main{
public static void main
(String[] args
) {
singleton obj1 = singleton.getInstance();
singleton obj2 = singleton.getInstance();
obj1.method();
if(obj1 == obj2)
{
System.
out.
println("Whatever!"); }
else{
System.
out.
println("porashuna koro toh? porte hobe! nokol ar hobe na!"); }
}
}
Ly9UaHJlYWQtc2FmZSBTaW5nbGV0b24gY2xhc3Mgd2l0aCBzeW5jaHJvbml6ZWQgZ2V0SW5zdGFuY2UoKQpjbGFzcyBzaW5nbGV0b257CiAgICBwcml2YXRlIHN0YXRpYyBzaW5nbGV0b24gaW5zdGFuY2U7CiAgICBwcml2YXRlIHNpbmdsZXRvbigpewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQW4gaW5zdGFuY2UgaXMgY3JlYXRlZCIpOwogICAgfQogICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgc2luZ2xldG9uIGdldEluc3RhbmNlKCl7CiAgICAgICAgaWYoaW5zdGFuY2UgPT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGluc3RhbmNlPW5ldyBzaW5nbGV0b24oKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgfQogICAgdm9pZCBtZXRob2QoKQogICAgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkISIpOwogICAgfQp9CgpwdWJsaWMgY2xhc3MgTWFpbnsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgc2luZ2xldG9uIG9iajEgPSBzaW5nbGV0b24uZ2V0SW5zdGFuY2UoKTsKICAgICAgICBzaW5nbGV0b24gb2JqMiA9IHNpbmdsZXRvbi5nZXRJbnN0YW5jZSgpOwogICAgICAgIAogICAgICAgIG9iajEubWV0aG9kKCk7CiAgICAgICAgCiAgICAgICAgaWYob2JqMSA9PSBvYmoyKQogICAgICAgIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXaGF0ZXZlciEiKTsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwb3Jhc2h1bmEga29ybyB0b2g/IHBvcnRlIGhvYmUhIG5va29sIGFyIGhvYmUgbmEhIik7CiAgICAgICAgfQogICAgfQp9