Fork me on GitHub
BangjinHu's Blog

让优秀成为习惯,让知识成为信仰


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 本站搜索

并发编程

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 并发编程
字数统计: 729 | 阅读时长 ≈ 3

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第一章 并发编程的挑战

1.1 上下文切换

时间片:CPU通过每个线程分配CPU时间片来实现单核处理器多线程执行代码。时间片是分配给每一个线程的时间,因为很短,通常是几十毫秒。所以会有多个线程同时执行的错觉。

注意:当并发执行累加操作不超过百万次时,速度会比串行执行累加操作慢。这是因为线程有创建和上下文切换的开销。

阅读全文 »

并发编程基础

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 并发编程
字数统计: 163 | 阅读时长 ≈ 1

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第一章 线程与多线程基础

1.1 线程的创建

线程是一个对象,它有唯一标识符ID、名称、状态、优先级等属性。线程只能修改其优先级和名称等属性 ,无法修改 ID 、状态。ID 是 JVM 分配的,名字默认也为Thread-XX,XX是一组数字。线程初始状态为 NEW。

阅读全文 »

Java内存模型

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 多线程编程
字数统计: 567 | 阅读时长 ≈ 2

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第三章 Java内存模型

3.1 Java内存模型基础

Java线程之间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。

阅读全文 »

线程间通信

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 并发编程
字数统计: 845 | 阅读时长 ≈ 3

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第三章 线程间通信

3.1 等待/通知机制

3.1.3 等待/通知机制的实现

wait()方法是使当前执行程序的线程进入等待状态,wait()方法是Object类方法,该方法用来将当前线程置入“预执行队列”中。

阅读全文 »

并发编程 - 对象及变量的并发访问

发表于 2019-10-15 | 更新于: 2020-03-29 | 分类于 并发编程
字数统计: 1,209 | 阅读时长 ≈ 4

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第二章 对象及变量的并发访问

2.1 synchronize 同步方法

2.1.1 方法内的变量是线程安全

提示:方法中变量不存在非线程安全问题,永远都是线程安全的。这是方法内部变量的私有属性造成的。

2.1.2 实例变量非线程安全

2.1.6 synchronize锁重入

关键字 synchronize 拥有锁重入的功能,也就是在使用 synchronize 时,当一个线程得到一个对象锁后,再次请求此对象锁时是可以再次得到该对象的锁的。

阅读全文 »

JVM内存管理

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 多线程编程
字数统计: 1,329 | 阅读时长 ≈ 5

注意:所有文章除特别说明外,转载请注明出处.

第八章 JVM内存管理

[TOC]

8.3 Java中内存使用组件

8.3.1 Java堆

Java堆是用来存储Java对象的内存区域,堆的大小在JVM启动时就一次向操作系统申请完成,通过-Xmx | -Xms两个选项控制大小。一旦分配完成那么堆的大小就固定,不能在内存不够时再向操作系统重新申请。不能在内存空闲时将多余的空间交还给操作系统。

-Xmx 表示堆的最大大小

-Xms 表示初始大小

提示:Java堆内存空间的管理由JVM控制,对象创建由Java应用程序控制,但是对象所占的空间释放由管理堆内存的垃圾收集器完成。

8.3.2 线程

阅读全文 »

Tomcat系统架构与设计模式

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 设计模式
字数统计: 641 | 阅读时长 ≈ 2

注意:所有文章除特别说明外,转载请注明出处.

第十一章 Tomcat的系统架构与设计模式

[TOC]

11.1 Tomcat总体设计

11.2 Tomcat中设计模式

11.2.1 门面设计模式

门面设计模式,将一个东西封装成一个门面好与人家更容易的进行交流,如同一个国家的外交部一样。这重模式主要用在一个大型系统中有多个子系统时,这时有多个子系统肯定需要进行通信。但此时不能将每个子系统的内部数据过多的暴露给其它系统,否则没有必要设计子系统,所以此时通过设计门面。

阅读全文 »

单例模式与多线程

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 多线程编程
字数统计: 508 | 阅读时长 ≈ 2

注意:所有文章除特别说明外,转载请注明出处.

第六章 单例模式与多线程

[TOC]

6.1 立即加载/“饿汉模式”

立即加载,在使用类的时候已经将对象创建完毕,常见的实现是直接new实例化。

6.2 延迟加载/“懒汉模式”

延迟加载就是在调用get()方法时实例才被创建,常见的方法是在get()方法中进行new实例化。

6.2.2 延迟加载/“懒汉模式的缺点”

阅读全文 »

Cookie和Session

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 Cookie和Session
字数统计: 794 | 阅读时长 ≈ 3

注意:所有文章除特别说明外,转载请注明出处.

第十章 深入理解Cookie和Session

[TOC]

Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。

Cookie在传递信息时,随着Cookie个数的增多和访问量的增加,它占用的网络带宽也很大。

Session不容易在多台服务器之间共享。

阅读全文 »

Lock的使用

发表于 2019-10-15 | 更新于: 2020-03-30 | 分类于 多线程与并发
字数统计: 779 | 阅读时长 ≈ 3

注意:所有文章除特别说明外,转载请注明出处.

[TOC]

第四章 Lock的使用

4.1 使用ReentrantLock类

与synchronize关键字类似,能够实现线程之间同步互斥,同时扩展功能使得其更加强大。

4.1.1 ReentrantLock 实现同步

阅读全文 »
1…131415…22
Bangjin-Hu

Bangjin-Hu

212 日志
73 分类
73 标签
RSS
GitHub email 微博 知乎 iProgramer_ing
0%
© 2018 — 2020 Bangjin-Hu | Site words total count: 486.7k