栈内存是线程私有的这一句话的理解

来源:互联网 发布:二维淘宝排名 编辑:程序博客网 时间:2024/06/04 19:25

这几天对这句话有了点明白,之前一直不懂,把自己理解的东西写下来

当前端发来一个请求,服务器执行了,当第二个请求过来的时候,服务器要把第一个请求执行完在执行第二个.这个叫做bio,相对应的,当前端发来一个请求,.服务器执行了,第二次发来请求的时候,服务器会开辟一个新的线程去执行这个请求,这个叫做nio,tomcat可以设置采用nio.tomcat最大线程数是150,当前端有150个请求过来的时候,这时候,后面的请求就需要等前面的请求处理完,在执行新的请求,在开辟新的线程的时候.线程是在栈内存开辟空间,来一个请求,在栈内存开辟一块空间,来一个开一个,在由该线程去执行相对应的方法,方法执行完弹栈,所以结合springMVC,control里是肯定不能定义成员变量的,成员变量分静态和非静态,静态在方法区的常量池分配空间,是共享的数据属于类,非静态的在堆内存开辟,属于对象,这个对象都可以访问到,所以一旦申明了成员变量就回造成线程安全问题,而局部变量是在栈内存开辟空间,一个线程执行某个方法,里面有局部变量,则在该线程开辟的栈内存开辟空间中申明,最后执行后,该弹栈弹栈,不会受到别的线程影响.

0 0
原创粉丝点击