-
JCIP-06-同步容器类
问题
为什么需要同步容器类?
同步容器类的优点和缺点?
对我们设计的启发
同步容器类
java 中的同步容器
在Java中,同步容器主要包括2类:
1)Vector、Stack、HashTable
2)Collections类中提供的静态工厂方法创建的类
Vector实现了List接口,Vector实际上就是一个数...
2019-01-18 03:21:15 |
Concurrency
-
JCIP-05-对象组合
问题
如何保证一个类是线程安全的?怎么验证?
线程安全的类可以成为组件,更加方便的创建线程安全的类吗?
线程安全的类有哪些条件
在设计线程安全类的过程中,需要包含以下三个基本要素:
1、找出构成对象状态的所有变量
2、找出约束状态变量的不变性条件
3、建立对象状态的并发访问管理策略
ps: 一言以蔽之,让所有变量都被对象并发管理。
...
2019-01-18 03:21:15 |
Concurrency
-
JCIP-04-可见性,发布与溢出,线程安全对象的构建
1 可见性
说到底并发还是离不开 JMM 的原理。可以看下我以前整理的 JMM 主内存和工作内存 以及后面的可见性,原子性,有序性。
1.1 内存模型
主内存:所有线程都可以访问
本地内存:每个线程私有的内存
java 的所有变量都存储在主内存中
每个线程有自己独的工作内存,保存了该线程使用到的变量副本,是对主内存中变量的一份拷贝
...
2019-01-18 03:21:15 |
Concurrency
-
JCIP-03-线程安全
1. 线程安全性
1.1 概念
当多个线程访问某个类时,不管运行时环境采用何种调度方式 或者这些线程如何交替执行,并且在主调代码中不需要任何额外的同步或者协同,这个类都能表现正确的行为,那么称这个类时线程安全的。
1.2 解决方案
多个线程访问可变的变量,导致其值不正确。
修复的方式可以从下面的几个方面入手:
不在线程之间共享该变量 ThreadLocal +...
2019-01-18 03:21:15 |
Concurrency
-
JCIP-02-基本概念介绍
1. 进程和线程
参见 进程与线程的一个简单解释
参考资料
进程与线程的一个简单解释
1. 进程和线程
参考资料
2019-01-18 03:21:15 |
Concurrency
-
JCIP-01-并发历史
1.并发的发展历史
其实,在早期计算机并没有包含操作系统,这个时候,这个计算机只跑一个程序,这个程序独享计算机的所有资源,这个时候不存在什么并发问题,但是对计算机的资源来说,确实是一种浪费。
于是,操作系统出现了,操作系统改变了这种现状,让计算机可以运行多个程序,并且不同的程序占用独立的计算机资源,如内存,CPU等。
操作系统的出现,主要有以下几点原因:
1,资源利用率:可以在其他程...
2019-01-18 03:21:15 |
Concurrency
-
JCIP-00-并发概览
本系列学习目的
提升对于 java 多线程的理解,要学会横向对比学习,多看些文章。
目前大部分的文章都是止步于创建和常见的类,本系列重在实践,参考书籍《java 并发编程实战》《Java并发编程的艺术》
后续原理参考《深入理解并行编程》。
对于 java 多线程的基础知识,参考 Java Thread 小结
经典书籍《图解 Java 多线程设计模式》 系列学习笔记。
对于 jvm...
2019-01-18 03:05:31 |
Concurrency
-
GitHook-Git 钩子
背景
最近“从开源到跑路”的事件逐渐增多,给涉事企业造成了不小的损失。因而相关的防范工作显得愈发重要。
客观而言,人为手动的防范显得原始和笨拙,好在git提供了相关的钩子方法,为我们这里的防范提供了可行性。
这里我们以 git push 命令对应的 pre-push 钩子为例,因为想要开源出去,这个命令通常是必须执行的。
编写 git pre-hook
shell 脚本
!/bi...
2019-01-17 01:34:35 |
Git