It is possible, but has no sense. The method doSomething
reads/writes some data, say, fields of the object the method belongs to. The most evident and reliable way is to declare the method doSomething
synchronized, as well as all other methods which can be called from different threads. Synchronized block is used only for optimizations, and novice programmers should avoid using it.
As for the "best effort", best effort in programming means no less than reliable and proven functionality. All other "efforts" are not best, including your code.