Are there any situations where you need to make your code thread safe if all it's doing is reading a file? This is kind of beyond the scope of the exam. Are there any file systems that won't allow concurrent read-only access to a file?
Its not 100% that there is no synchronization problems while multiple threads reading from a single file. ConsiderHere there is problem as a single thread can't read the file to the fullest. So when each thread is supplying input to some other process then only a partial data of the file will be available from each thread. This problem can't even be solved with the synchronized block, but it can be made sure that a single thread reads the whole file and other threads have no data to read at the end of first thread's execution. To solve this problem you can have a FileReader object inside the run() method to ensure that each thread has the resource to read the same file.