for unprotected multithreads, it is uncertain when some data is modified in one thread and when it is submitted to main memory, and the values used by other threads are not necessarily up-to-date.
in the case of volatile modification, it is guaranteed to be submitted to main memory immediately after modification.
can ThreadLocal be simply understood to mean that variables in working memory of each thread are never submitted to main memory