Creating a secure code stream can be as simple as adding a comment saying that the class was not intended to be used by multiple threads at the same time. So, in that sense: yes, all of your classes should be thread safe.
However, in practice, many, many types are likely to be used by only one thread, which is often referred to only as local variables. This may be true, even if the program as a whole is multithreaded. It would be a mistake to make every object safe for multi-threaded access. Although the penalty can be small, it is ubiquitous and can be a serious fixation problem.
source share