Java并发编程学习——Java并发编程之美学习笔记四 发表于 2019-08-14 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 3k | 阅读时长 ≈ 14 原子变量操作类 在JUC并发包中有很多原子变量类,比如AtomicInteger,AtomicLong和AtomicBoolean等。他们原理类似,这里讲解AtomicLong类,AtomicLong是原子性递增和递减类,其内部使用Unsafe实现。 12345678910111213141516 ... 阅读全文 »
Java并发编程学习——Java并发编程之美读书笔记三 发表于 2019-08-13 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 1.6k | 阅读时长 ≈ 6 Random类及其局限性 在JDK7之前包括现在Random都是使用比较广泛的随机数生成工具。在java.lang.Math中随机数生成也是使用的java.util.Random的实例。 下面是Random的一种常见的使用方式。 基本步骤就是生成一个Random实例,然后通过这个实例的方法 ... 阅读全文 »
Java并发编程学习——隐藏在并发包中的管程 发表于 2019-08-12 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 626 | 阅读时长 ≈ 2 Java SDK并发包中的管程 在Java SDK并发包中通过Lock和Condition两个接口来实现管程,其中Lock用于解决互斥问题,Condition用来解决同步问题。 再造管程的理由 在Java 1.5之前synchronized是不如SDK中的Lock的,但1.6版本之后synchr ... 阅读全文 »
Java并发编程学习——Java并发编程之美读书笔记二 发表于 2019-08-12 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 2.3k | 阅读时长 ≈ 7 什么是多线程并发编程 并发:同一个时间段多个任务同时都在执行。 并行:多个任务在单位时间内同时执行。 也就是说并发使用cpu在短时间内切换进程造成了多个任务同时执行的假象。而在多线程编程实践中,线程的个数往往大于CPU个数,所以一般都称多线程并发编程而不是多线程并行编程(意味着一个核上存在 ... 阅读全文 »
Java并发编程学习——Java并发编程之美读书笔记一 发表于 2019-08-11 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 2.7k | 阅读时长 ≈ 9 什么是线程 在操作系统中,进程是资源分配的基本单位,线程是资源调度的基本单位,因为真正占用CPU的是线程。 对于整个Java应用程序来说是一个进程,里面有很多线程。在操作系统中说,线程不独立拥有资源(进程是拥有资源的基本单位),但是线程还是会拥有自己独立的一些资源的比如说程序计数器,栈等 ... 阅读全文 »
Java并发编程学习——为什么局部变量是线程安全的 发表于 2019-08-10 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 1k | 阅读时长 ≈ 3 局部变量不存在数据竞争 在并发编程领域里,没有共享就没有伤害。对于局部变量是不存在数据竞争的,为什么呢? 比如,下面代码里的 fibonacci() 这个方法,会根据传入的参数 n ,返回 1 到 n 的斐波那契数列,斐波那契数列类似这样: 1、1、2、3、5、8、13、21、34……第 1 ... 阅读全文 »
Java并发编程学习——创建多少线程才是合适的 发表于 2019-08-10 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 1.1k | 阅读时长 ≈ 4 为什么使用多线程 减少延迟,提高吞吐量。 延迟指从发出请求到收到响应过程的时间,吞吐量指单位时间内能完成的请求个数。 多线程应用场景 想要降低延迟提高吞吐量主要有两个维度的方法,第一个是优化算法,第二个是最大化硬件的利用率。前者属于算法范畴,后者就和并发编程息息相关了。而对于计算机硬件来说最 ... 阅读全文 »
Java并发编程学习——Java线程的生命周期 发表于 2019-08-10 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 1.5k | 阅读时长 ≈ 5 通用线程模型 在操作系统中线程有五种状态,这也是通用的线程模型。这五种状态分别是初始状态(创建),可运行状态(就绪),运行状态,休眠状态(阻塞),终止状态(消亡)。 对于这五种状态,不同的编程语言会对他们进行简化合并或者细化,就比如Java把这五种状态进行了相应的更改。 Java线程模型 ... 阅读全文 »
Java并发编程学习——管程 发表于 2019-08-09 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 1.1k | 阅读时长 ≈ 4 什么是管程 管程:管理共享变量和操作共享变量的过程。为了解决信号量配对的复杂性以及分散在程序中降低了程序的可读性,管程通过一种数据结构对共享变量和对共享变量的操作进行了封装。 管程和信号量是等价的,所谓等价指的是用管程能够实现信号量,也能用信号量实现管程。但是管程更容易使用,所以 Java 选 ... 阅读全文 »
Java并发编程学习——安全性,活跃性以及性能问题 发表于 2019-08-09 | 分类于 Java并发编程 | | 热度: ℃ 字数统计: 2.9k | 阅读时长 ≈ 10 安全性问题 在并发编程中需要考虑三个基本问题——安全性,活跃性以及性能。 所谓安全性就是指程序能否按照我们预期的执行。就比如线程安全这个概念,所谓线程安全和不安全无非就是指程序能否保证它的正确性,而这个正确性就是我们让程序按照我们所期望地执行。 而这种情况下只有存在共享数据并且该数据会发生 ... 阅读全文 »