本文所有内容,皆属于个人观点,如存在错误,欢迎批评指正.
多线程的情况下访问共享的数据,这样会对同一个数据进行操作,存在安全隐患.
servlet
servelt是单例多线程的 ,servlet 仅仅被初始化一次,当多个线程访问时,访问的是同一个servlet的实例.如果多个线程访问的是servlet中的方法,那么是不存在安全问题的,因为每个线程中的方法是相互独立的.如果访问的是servlet中的全局变量,那么每个线程访问的都是同一个变量,存在安全问题,全局变量被多个线程共享.如果想在servlet中使用全局变量,可以使用threadlocal,把变量绑定到每个线程中.
struts
struts 针对每个线程对应的是一个action的实例,存在线程安全问题.
struts2
struts2 对应每个线程都会有一个action的实例,线程之间安全.
对于多个线程读取到共享的数据存在安全的问题,可以使用线程同步锁解决,不过一旦使用synchronized会降低系统的速度.
本文所有内容,皆属于个人观点,如存在错误,欢迎批评指正.