全局变量对线程安全的影响

1.成因

线程安全问题都是由全局变量及静态变量引起的。但是,如果每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;如果有多个线程同时执行写操作,一般都需要考虑线程同步,否则就可能影响线程安全。

  1. 常量始终是线程安全的,因为只存在读操作。
  2. 每次调用方法前都新建一个实例是线程安全的,因为不会访问共享的资源。
  3. 局部变量是线程安全的。因为每执行一个方法,都会在独立的空间创建局部变量,它不是共享的资源。局部变量包括方法的参数变量和方法内变量。

2. controller总的变量

在controller总使用 private HttpRequest request;如果多个请求同时访问这一个controller时候会产生线程安全问题,因为用的是同一个request对象,如果使用 @Autowired注解注入 HttpRequest的话,就使用的同一个request对象,因为在spring启动的时候,就会初始化request对象,所有request使用的是同一个request.

猜你喜欢

转载自www.cnblogs.com/sjzxxy/p/12980538.html
今日推荐