Java并发编程实战-可爱猪猪解读

【连载】第2章-2.1什么是线程安全性

2019-08-20  本文已影响1人  可爱猪猪

格言:在程序猿界混出点名堂!

《JAVA并发编程实战》解读
【连载】第2章-2.1什么是线程安全性

回顾:第一章主要介绍线程的简史,让大家知道什么是线程,线程存在哪里,利和弊是什么,这一章会为后面的章节打下基础,介绍什么是线程安全性。

共享和可变

共享意味着变量可以被多线程同时访问,这个很好理解。
可变则意味着变量的值在其生命周期内可以发生变化。相对不可变而言,比如Java中我们熟悉的关键字final,如果变量是final就不存在线程安全问题。
因此,共享可变是造成线程不安全的必然条件,因此有以下三种方式可以避免不安全的发生:

什么是线程安全性

书中说了几个段落,其实就一句话:所见即所知(We know it when we see it.)。就是程序表现出来的行为和状态和你所期望的是一致的。

无状态

无状态一定是线程安全的

书中讲的就是Servlet的示例代码,大概意思就是方法中使用的都是局部变量,不存在共享变量,这个Servlet也就是线程安全。无状态也就是没有共享变量的意思,也就是没有共享状态。见书中例子:

@ThreadSafe
public class StatelessFactorizer implements Servlet{
  public void service(ServletRequest req, ServletResponse resp){
   BigInteger I = extractFromRequest(req);
   BigInteger[] factors = factor(i);
   encodeIntoResponse(resp,factors);
  }
}

知识点

  1. 共享和可变是导致线程出现不安全的条件。
  2. 线程安全性的理解:所见即所知。
  3. 什么是无状态。

喜欢连载可关注简书或者微信公众号
简书专题:Java并发编程实战-可爱猪猪解读
https://www.jianshu.com/c/ac717321a386
微信公众号:逗哥聊IT

上一篇 下一篇

猜你喜欢

热点阅读