作者:高广超 www.jianshu.com/p/e674ee68fd3f 一、为什么要用锁? ============= 锁 是为了解决并发操作引起的脏读、数据不一致的问题。 二、锁实现的基本原理 ============== 2.1、volatile Java编程语言允许线程访问共享变量, 为了 ...
分类:
编程语言 时间:
2020-05-08 09:27:32
阅读次数:
66
AbstractQueuedSynchronizer 类如其名,抽象的队列式的同步器,AQS 定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch。 它维护了一个 volatile int state ...
分类:
编程语言 时间:
2020-05-06 01:43:49
阅读次数:
110
分布式锁简介: 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现。 在集群架构中,多个JVM虚拟机之间为了保证数据的一致性 ,所以引进了分布式锁的的概念。 分布式锁的设计要求 1.在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行 2.高可用的获取锁与释放锁 3.高 ...
分类:
其他好文 时间:
2020-04-29 15:03:15
阅读次数:
59
Samba文件共享服务 Samba服务能够实现 Linux 系统与 Windows 系统之间的文件共享工作。 一. 通过yum软件仓库安装Samba服务程序 yum install samba 二. 创建用于访问共享资源的账户信息,pdbedit命令用于管理SMB服务程序的账户信息数据库。 三. 创 ...
分类:
其他好文 时间:
2020-04-27 22:51:34
阅读次数:
97
Java专题十三(2):线程安全与同步 [TOC] 多个线程访问共享资源和可变资源时,由于线程执行的随机性,可能导致程序出现错误的结果 假设我们要实现一个视频网站在线人数统计功能,在每个客户端登录网站时,统计在线人数,通常用一个变量count代表人数,用户上线后,count++ 假设目前在线人数co ...
分类:
编程语言 时间:
2020-04-25 23:27:00
阅读次数:
71
一.概述 linux中不区分进程和线程,都认为是个任务,都是创建一个task_struct.如何区分?线程是共享相同地址空间,而进程是独占地址空间. 多线程共享同一进程的地址空间 优点: 通信方便,可以通过全局变量. 缺点: 访问共享数据时需要考虑同步和互斥. 二.线程共享资源: 可执行的指令 静态 ...
分类:
编程语言 时间:
2020-04-20 15:23:25
阅读次数:
65
一、什么是共享内存 不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进 ...
分类:
系统相关 时间:
2020-04-14 12:37:36
阅读次数:
77
分布式锁简介 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现。 分布式锁可以保证在分布式系统中,同一操作只被一台机器上的一个线程执行,保证共享数据的一致性。 分布式锁的设计要求 要是可重入锁(避免死锁) 要有高可用的获取锁、释放锁功能 获取锁、释放锁的性能要好 使用redis实现 ...
分类:
其他好文 时间:
2020-04-09 12:35:22
阅读次数:
65
当多线程访问共享可变数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要线程封闭出场了。 数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为 线程封闭 。 本文主要介绍线程封闭中的其中一种体现:ThreadLocal,将会介绍什么是 ...
分类:
其他好文 时间:
2020-04-05 18:11:56
阅读次数:
57
Java 内存模型 什么是 Java 内存模型(Java Memory Model) Java 内存模型是一种规范,规范了 Java 虚拟机和计算机内存是如何进行协同工作的。 JMM 规定了一个线程如何和何时看到其它线程修改过后的的共享变量的值,以及在必须时如何同步的访问共享变量。 主内存、高速缓存 ...
分类:
编程语言 时间:
2020-04-02 19:38:31
阅读次数:
67