1.1作用 防止指令重排 使得多线程下的共享资源能够独自修改使用。解决缓存不一致问题。 1.2相关知识 1.Java内存模型 1.3详解 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1.保证了不同线程对这个变量进行操作时的可见性,即一个线程修 ...
分类:
其他好文 时间:
2020-07-12 11:55:47
阅读次数:
60
Synchronized锁的是什么? 临界区与锁 并发编程中不可避免的会出现多个线程共享同一个资源的情况,为了防止出现数据不一致情况的发生,人们引入了临界区的概念。临界区是一个用来访问共享资源的代码块,同一时间内只运行一个线程进入。 那么如何实现这个临界区呢?这就用到我们的锁了,当进程想要访问一个临 ...
分类:
其他好文 时间:
2020-07-06 12:50:59
阅读次数:
70
在实际的开发场景中,我们可能会遇到不同客户端需要互斥地访问某个共享资源,也就是同一时刻只允许一个客户端操作这个共享资源,为了达到这个目的,一般会采用分布式锁来解决,目前流行的分布式锁实现方式有数据库、Memcached、Redis、文件系统、ZooKeeper,因Redis高性能、部署简单被广泛采用 ...
分类:
其他好文 时间:
2020-07-04 18:31:17
阅读次数:
64
从这篇文章开始分析JDK源码中AQS的底层实现原理,作为多线程访问共享资源的同步器框架基础实现,涉及到的东西还是比较多的,一起来看看传说中的AQS实现吧 ...
分类:
其他好文 时间:
2020-07-04 13:49:31
阅读次数:
65
分工、同步、互斥的历史由来 分工:单道、多道、分时 同步:线程通信(组织编排任务) 互斥:因(多线程访问共享资源)果(串行化共享资源的访问) 1切都是为了提高性能 2.可见性、原子性、有序性 可见性:CPU缓存导致可见性问题 原子性:线程切换导致原子性问题 有序性:编译优化带来的有序性问题 3.ja ...
分类:
编程语言 时间:
2020-07-02 21:43:30
阅读次数:
69
BS架构:基于浏览器的项目(软件) CS架构:基于客户端服务器端的应用 web资源:我们电脑中的图片,音频,视频,页面。。。。。 服务器(tomcat):用来共享资源,也叫web容器 Tomcat的目录结构: 如何访问tomcat共享的资源: http://10.1.5.170:8080/aa/个人 ...
分类:
Web程序 时间:
2020-06-30 20:56:57
阅读次数:
106
锁 重入锁 读写锁 悲观锁、乐观锁 公平锁、非公平锁 自旋锁 分布式锁 锁 锁是用来控制多个线程访问共享资源的工具。作为并发控制,保证一致性的工具,锁本质上是一个标记。 把这个标记放在关系数据库(RDBMS)中,我们就可以使用数据库的方式实现锁机制。比如设计一张锁表,表中有个字段state,stat ...
分类:
编程语言 时间:
2020-06-30 20:46:05
阅读次数:
65
线程安全 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的 Brian Goetz 多线程安全问题是什么? 问题: 多线程在修改共享资源的时 ...
分类:
编程语言 时间:
2020-06-26 18:37:58
阅读次数:
78
管程 悲观锁(阻塞) 临界区 一段代码块对共享资源存在多个线程的读写操作, 我们就叫它临界区 临界区存在多个线程竞争共享资源的问题, 由于分时系统, 我们的cpu不能一直负责一条线程的执行, 所以在cpu切换的时候需要保存当时的场景, 之后cpu回来后需要恢复场景再次执行代码, 我们简称这个过程为线 ...
分类:
其他好文 时间:
2020-06-26 18:02:01
阅读次数:
112
计算机科学中, 同步(synchronization)是指两个不同但有联系的概念:进程同步与数据同步。进程同步指多个进程在特定点会合(join up)或者握手使得达成协议或者使得操作序列有序。数据同步指一个数据集的多份拷贝一致以维护完整性。常用进程同步原语实现数据同步。 死锁:某一个进程占有共享资源 ...
分类:
其他好文 时间:
2020-06-25 09:40:03
阅读次数:
83