什么是线程安全?


 

  线程安全是指的是某个函数、函数库在并发环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。

  这里有几个要点:并发、多线程、共享变量

 

并发


 

并发与并行的关系


 

这里我采用形象的术语来描述,尽量让非本专业的人也能理解

并发是两个队伍交替使用一个机器,同一时刻只有某个队伍的某一个人可以使用,下一刻有可能是A队伍的人在使用,也有可能是B队伍的人在使用(看运气或者谁优先)。

并行是两个队伍同时使用两台机器,同一时刻AB队伍都有一个人在使用对应的机器。

 

多线程


 

进程和线程的关系


 

  对于操作系统来说,一个任务就是一个进程,比如打开一个记事本是一个进程,打开两个记事本就启动了两个记事本进程。而在一个进程内部,要同时干很多事,这些子任务就被成为线程。

  拿我们熟悉的java语言来说,jvm就是一个进程,多个jvm就是多个进程,而在jvm里面可以创建很多线程,多个线程之间共享jvm资源,并且多个线程并发执行。

 

共享变量


 

所谓共享变量,指的是多个线程都可以操作的变量。在jvm中,堆和方法区的区域是线程共享的。

静态变量、成员变量、局部变量

这三个分别放在jvm的方法区、堆内存、栈内存

 

posted on 2019-05-13 17:05  蓝绿绿  阅读(164)  评论(0编辑  收藏  举报