<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Java并发编程实战 on 极客老墨</title>
    <link>https://blog.hankmo.com/tags/java%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E5%AE%9E%E6%88%98/</link>
    <description>Recent content in Java并发编程实战 on 极客老墨</description>
    <generator>Hugo -- 0.138.0</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 28 Mar 2022 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.hankmo.com/tags/java%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E5%AE%9E%E6%88%98/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>读《Java并发》— Java内存模型</title>
      <link>https://blog.hankmo.com/posts/tech/jcip-jmm/</link>
      <pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/jcip-jmm/</guid>
      <description>这一章称为&amp;#34;对象的共享&amp;#34;，书中重点介绍了如何共享和发布对象，这两章是并发编程中非常基础却很重要的部分。在本章，首先介绍了什么是可见性问题，然后介绍了Java内存模型，讨论什么是内存可见性以及java保证内存可见性的方式，在此基础上介绍如何设计线程安全的对象，如何使用线程封闭技术和设计不可变对象来避免同步，最后再重点探讨如何安全地发布对象。由于内容较多，我将这一章分为两篇来阐述自己对本章的理解，这是上篇。Java的并发机制基于共享内存，要理解对象间的共享关系，则离不开对象间的内存关系，这涉及到本章要介绍的一个重要概念：Java内存模型，又称 JMM。</description>
    </item>
    <item>
      <title>读《Java并发》— 线程安全性</title>
      <link>https://blog.hankmo.com/posts/tech/jcip-concurrency-thread-safety/</link>
      <pubDate>Tue, 25 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/jcip-concurrency-thread-safety/</guid>
      <description>并发编程会带来诸多挑战，最基本的就是 *线程安全性*，但这又是一个非常复杂的主题。这一章重点介绍了什么是线程安全性、原子性、竞态条件等概念，以及在Java中如果通过加锁来确保线程安全性。要理解什么是线程安全性，必须先明白什么是正确性，因为正确性是线程安全性的核心概念。正确性的含义是，某个类的行为与其规范完全一致。这个定义从静态视角出发强调了类的规范重要性。通常，我们不会定义类的详细规范，但是我们应该为类和方法提供文档注释，来说明类是否是线程安全的，以及对于线程安全性如何保证。尤其在方法上，应该明确规定该方法是否已经保证了线程安全，调用者是否应该在同步机制内调用该方法等等。</description>
    </item>
    <item>
      <title>读《Java并发》— 并发简史</title>
      <link>https://blog.hankmo.com/posts/tech/jcip-concurrency-intro/</link>
      <pubDate>Sat, 22 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/jcip-concurrency-intro/</guid>
      <description>这一章主要讲述线程的发展历史，以及并发编程带来的优势和挑战。1946年第一台计算机诞生，一直到20世纪50年代中期，这时候的计算机没有操作系统的概念，采用手工操作的方式工作，每次只能有一个人使用计算机。此时的手工操作方式，用户独占全机，昂贵的计算机资源得不到充分利用。后来，随着计算机的发展，出现了批处理系统、多道程序系统，它们都提升了计算机的资源利用率。1961年，分时系统（Time Sharing System）出现，此时的一台计算机可以供多个用户终端同时连接并使用，就好像自己在独占计算机一样。分时系统将CPU的运行时间分成很短的时间片，按时间片分配给不同的连接终端使用，这充分利用了计算机资源，看起来就好像多个用户在同时使用计算机一样。</description>
    </item>
    <item>
      <title>读《Java并发》— 简介</title>
      <link>https://blog.hankmo.com/posts/tech/jcip-book-intro/</link>
      <pubDate>Thu, 20 Jan 2022 00:00:00 +0000</pubDate>
      <guid>https://blog.hankmo.com/posts/tech/jcip-book-intro/</guid>
      <description>《Java并发编程实战》是 Brian Goetz 等 6 位 Java 大师合著的介绍 Java 并发编程的经典著作，这部名著由浅入深的介绍了 Java 并发编程的诸多知识，是一本完美的Java并发参考手册，豆瓣评分 9.0，可见其受欢迎程度。《Java并发编程实战》从并发性和线程安全性的基本概念出发，介绍了如何使用类库提供的基本并发构建块，用于避免并发危险、构造线程安全的类及验证线程安全的规则，如何将小的线程安全类组合成更大的线程安全类，如何利用线程来提高并发应用程序的吞吐量，如何识别可并行执行的任务，如何提高单线程子系统的响应性，如何确保并发程序执行预期任务，如何提高并发代码的性能和可伸缩性等内容，最后介绍了一些高级主题，如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。</description>
    </item>
  </channel>
</rss>
