• 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题


    servlet默认是存在线程安全问题的,但是说白了,servlet的线程安全问题实际上就是多线程的线程安全问题,因为servlet恰巧是一个多线程才会出现安全性问题。

    浏览器每次通过http协议去提交请求,都会实例化一个servlet对象,即产生一个线程,如果他们操作的是同一个对象,应该把该变量定义成实例变量,但这就可能发生线程不安全的问题。下面举个简单的例子:

     张三看到仓库里有3件物品,他要去拿两件,但这时李四也来了,抢先他一步拿了两件物品,当张三拿的时候,仓库根本无法提供给他两件物品。这就是线程不安全。

    这种情况下应该使用synchronized加锁装置保证同一时刻只有一个线程运行,只有当这个线程运行完并释放锁,下一个线程才能运行。


    还有一种情况是多个用户操作的不是同一个变量,这时就应该将变量定义为局部变量,他们各自操作各自的对象,各个线程之间不会相互干扰,也不会产生线程安全性问题。

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    按升序合并如下两个list, 并去除重复的元素
    python数据结构
    驼峰式命名改下划线命名
    求某个数出现的次数超过了总数的一半
    翻转字符串
    复习
    RESTful
    Flask wtforms
    数据库连接池(DBUtils)
    iOS
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4931813.html
Copyright © 2020-2023  润新知