any access to an obect that can be used simultaneously by two threads is not threadsafe.
your example in Part 2 is clearly safe, as it uses only values passed in as arguments, but if you used an object scoped variable you might have to surround the access with appropriate lock statements