Skip to main content

Posts

Showing posts with the label static

Are Java static initializers thread safe?

I'm using a static code block to initialize some controllers in a regsitry I have. My question is therefore, can I guarantee that this static code block will only absolutely be called once when the class is first loaded? I understand I cannot guarantee when this code block will be called, Im guessing its when the Classloader first loads it. I realize I could synchronize on the class in the static code block, but my guess is this is actually what happens anyway? Simple code example would be; class FooRegistry { static { //this code must only ever be called once addController(new FooControllerImpl()); } private static void addController(IFooController controller) { // ... } } or should I do this; class FooRegistry { static { synchronized(FooRegistry.class) { addController(new FooControllerImpl()); } } private static void addController(IFooController controller) { // ... } }

Unable to get Static declaration behaviour in PHP

class StaticTester { private static $id=0; function__construct() { self::$id+=1; } public static function checkIdFromStaticMethod() { echo "Current Id from Static method is ".self::$id; } } $st1=new StaticTester(); StaticTester::checkIdFromStaticMethod(); // this outputs 1. Okay ,I am not getting why the output is 1? After all Static means the value cannot be changed !