线程安全并不是线程的安全,而是指内存的安全。 进程在操作系统运行行,会得到操作系统分配的内存空间,而每个进程只能在自己的内存空间中运行,而不能去访问其他的进程。而在进程的内存空间中会有一块公共的空间,称为堆内存。而这一块空间是公共的,也就意味着进程的每个线程都可以去访问这块公共空间,这也就说到了线程安全。由于是堆内存为公共区域,当有个线程在堆内存中存放数据后,会有其他的线程来堆内存中访问,而且是在没有任何限制情况下进行访问,存在被意外修改数据的风险。 那么,为了解决这一线程安全问题,操作系统会为每个线程分配属于它自己的内存空间,即栈内存,这个栈内存,其他线程是无法进行访问和修改数据的,这也就保护了线程的安全问题。 接下来,如果某个线程的某个数据只会被这个线程使用,其他线程不能操作也不需要操作,那么这个数据就会被放入线程的栈内存中,被保护起来。称之为,局部变量。