美文网首页Java并发编程实战-可爱猪猪解读
【连载】第2章-2.1什么是线程安全性

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

作者: 可爱猪猪 | 来源:发表于2019-08-20 22:00 被阅读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

相关文章

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

    格言:在程序猿界混出点名堂! 《JAVA并发编程实战》解读【连载】第2章-2.1什么是线程安全性 回顾:第一章主要...

  • java并发编程实战2~3

    2 线程安全性 2.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何...

  • 第二章-线程安全性

    线程安全核心: 共享: 可变: 同步: 如何修复多个线程访问可变状态是发生的错误: 2.1 什么是线程安全性 无状...

  • 第二章——线程安全性

    2.1 什么是线程安全性 无状态对象一定是线程安全的 上面的 StatelessFactorizer 是无状态的,...

  • Java并发编程 线程安全性

    什么是线程安全性 线程安全性:当多个线程访问某个类时,不管运行时采用何种调度方式或者这些线程将被如何交替执行,并且...

  • 什么是线程安全性?

    1. 定义 线程安全性最重要的概念就是正确性,而正确性的意思就是这个类表现的行为要和我们的期望的行为是一致的。 这...

  • 《Java并发编程实战》文摘

    《Java并发编程实战》文摘,有兴趣的朋友可以买本纸质书仔细研究下。 一 线程安全性 1.1 什么是线程安全性 当...

  • 线程中断

    什么是线程中断?线程中断即线程运行过程中被其他线程打断了。 线程中断的重要方法2.1 java.lang.Thre...

  • ThreadLocal实现原理揭秘

    ThreadLocal是什么?对java多线程有了解的人都清楚,在多个线程程序中,会出现线程安全性问题,即多线程是...

  • 理解《Java并发编程实战》时需要回答的问题

    什么是并发性?什么是线程安全性? 什么是基本并发构建块?如何使用它来构建线程安全类? 构建线程安全类的规则清单有哪...

网友评论

    本文标题:【连载】第2章-2.1什么是线程安全性

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