"If a TimerTask accesses data that is also accessed by other application threads, then not only must the TimerTask do so in a thread safe manner, but so must any other classes that access that data. Often the easiest way to achieve this is to ensure that objects accessed by the TimerTask are themselves thread safe, thus encapsulating the thread safety within the shared objects."-Java Concurrency In Practice-Chapter 1.4
Yes everything inside TimerTask must be Thread safe.In your example, there are 5 threads calling mySweetService.doStuff() concurrently and if there is a non thread safe collection like HashMap it may lead to unexpected behaviour.
As a thumb rule any concurrent call or access to variable or collection must be thread safe.Correct me if I am wrong
"Whether an object needs to be threadsafe depends on whether it will be accessed from multiple threads. This is a property of how the object is used in a program, not what it does. Making an object threadsafe requires using synchronization to coordinate access to its mutable state; failing to do so could result in data corruption and other undesirable consequences" -Java Concurrency In Practice-Chapter 2
Well probably this book has answers to everything :P