Title pretty much sums it up.
I have a factory class that will construct an instance of another class when it's create() method is called. I have setup my Factory Class to be a singleton, which forces invokation to look as such:
SomeClass clazz = (SomeClass) FactoryClass.getInstance().create(ENUM.TYPE);
This guarantees that my Factory is thread safe, but may cause blocking, etc.
If my factory was not a singleton, I could instead set my .create() method be static, which would achieve similar results.
SomeClass clazz = (SomeClass) FactoryClass.create(ENUM.TYPE);
Assuming multiple threads may attempt to create instances of objects via the FactoryClass, which is better? Don't both ways of doing this provide the same level of thread safety?