Member variables are per object instance. I showed the same instance of UnsafeClass as an argument to two threads, so both threads were looking at one object instance, one member variable instance. That's pretty much the definition of thread-safe or unsafe - how does it behave if two threads work with the same object instance.
This kind of thing happens in
Servlet containers all the time. The container might have only one instance of a servlet object and pass it to any number of incoming request threads at the same time. It's also common for a main driver thread to spawn a bunch of worker threads and give each worker a reference back to the driver, perhaps to report their progress. Or maybe many threads want to update a window or log. So even if my example was a bit contrived (or a lot contrived) this does happen in the real world often enough to make you want to be careful.