美文网首页
线程安全性

线程安全性

作者: 起风了dzj | 来源:发表于2018-07-06 17:40 被阅读0次

    在理解什么是线程安全性,讲到一个实例:

    一个无状态的Servlet

    @ThreadSafe

    public class StatelessFactorizer implements Servlet{

    public void service (ServletRequest req, ServletResponse resp){

    BigInteger i = extractFromRequest(req);

    BigInteger[] factors=factors(i);

    encodeIntoResponse(resp,factors);

    }

    }

    与大多数Servlet一样,StatelessFactorizer 是无状态的:既不包含任何域,也不包含任何对其他类中域的引用。

    servlet如果定义了一个static类型的成员变量--有状态的servlet

    任何你处理的时候如果要改这个字段并进行处理,可能你第一次请求改了这个字段 之后处理之前  这个字段就被第二个并发请求给改了--线程不安全

    如果你一个成员变量都没有 就不会有这个问题--无状态的servlet

    无状态对象一定是线程安全的。

    在线程安全类中封装了必要的同步机制,因此客户端无须进一步采取同步机制。

    当多个线程访问某一个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确行为,那么这个类是线程安全的。

    相关文章

      网友评论

          本文标题:线程安全性

          本文链接:https://www.haomeiwen.com/subject/fpebuftx.html