最近在学习线程方面概念有点混淆,想请教下各位大神.
假设我把一个Web程序放在了服务器,假设现在有100个人访问我的Web,
那我是否可以理解为是100条线程同时访问我服务器上的这一个web程序的login方法,
问题:这个多端同时访问这个方法是否涉及到线程安全的问题,还是说互联网的工作原理是每个人分配一套web程序服务,互不影响,不不干扰。
有100个人访问我的Web,不一定有100个线程,web服务器有线程队列,同时并发小于100,多于的会排队等前面执行完。
每个页面(bean)的变量,是成员变量,互不干扰,不会有线程冲突,只有全局变量、静态变量才需要同步。
举个例子。
Spring MVC是单例多线程的方式实现,所以controller里的成员变量可能会导致同步问题,当然我们在注入的时候,service等也都是单例,而且是状态不会变化的,所以不会有同步的问题;如果你在controller里面定义一个count的变量,每次请求修改count来标记访问的次数,这时候就可能出现同步问题了;
而struts2是每个请求创建一个action,所以不会存在同步问题。
对于线程这个问题我推荐你看Java并发编程实践这本书,这本书讲了并发处理,以及对线程和进程有了详细的解释。我想对你会很有用处
这个一般不考虑多线程问题,高并发问题,才会考虑。每个用户登录就是一个线程,你担心的问题,web服务器会帮你处理的,例如servlet就是线程安全的容器,如果我没记错