( utpKabel | 2014. 07. 20., v – 20:25 )

"Valamikor felszabadul az eroforras, de hogy mikor azt nem tudjuk."

Nem tudom ki írta a Resource osztályt, de ha én csináltam volna, én biztos nem rakok resource elengedést a finalizerbe amolyan back-up megoldásként, ha esetleg a user elfelejtené. Csak fölöslegesen szopatnám a tesztelőket az így becserkészett nem-determinisztikussággal.

A helyes működés az, hogy ha a user nem szabadítja fel az erőforrást explicit (vagy try-with-resources blokk által), akkor az erőforrás soha nem szabadul fel. Konzisztensen, tesztelhető módon, és függetlenül attól, hogy az erőforrást reprezentáló objektum elérhető-e még.

"ha en egy eroforrast reprezentalok egy osztallyal, akkor tudom *garantalni* azt, hogy felszabadul, amint az objektum elerhetetlenne valik?"

Nem, de ettől még determinisztikus, hiszen a close() determinisztikusan hívódik meg (explicit, finally-blokkban, try-with-resources által), vagy determinisztikusan nem hívódik meg (programozó "elfelejtette").