1、Synchronized是jvm层面的锁是由jvm实现的而ReentrantLock是Api层面的锁它需要lock()和unlock()方法来获得锁和释放锁。 2、ReentrantLock获取锁可等待中断、可作为公平锁和非公平锁而Synchronized只能阻塞的等待获取锁、只能为非公平锁。 ...
分类:
其他好文 时间:
2020-05-11 23:21:43
阅读次数:
55
一、写在前面 现在面试,一般都会聊聊分布式系统这块的东西。通常面试官都会从服务框架(Spring Cloud、Dubbo)聊起,一路聊到分布式事务、分布式锁、ZooKeeper等知识。 所以咱们这篇文章就来聊聊分布式锁这块知识,具体的来看看Redis分布式锁的实现原理。 说实话,如果在公司里落地生产 ...
分类:
其他好文 时间:
2020-05-10 21:32:07
阅读次数:
73
/* * Copyright(C) 2020 Burgess Fan aLL rights reserved. * * 文件名称:mutex.c * 创 建 者:Burgess * 创建日期:2020年05月10日 */ #include <stdio.h> #include <unistd.h> ...
分类:
编程语言 时间:
2020-05-10 13:11:34
阅读次数:
85
1、基于数据库 它的实现方式很简单,就是在数据库中创建一个lock表,申请锁就是向表中插入一行唯一关键字,数据库能够保证只有一个请求执行成功,也就是说这个请求申请到了锁,其他请求会报错说明没有申请到锁。释放锁就是在数据库中删除这一行数据。 分部式锁接口定义: package com.zhi.util ...
分类:
编程语言 时间:
2020-05-03 18:17:56
阅读次数:
69
一、Lock接口、ReentrantLock 调用Lock接口的lock方法的线程,能够获得对象锁。当线程调用unlock方法时,会释放对象锁。 可重入锁ReentrantLock是Lock接口的基本实现。 二、条件对象与Condition接口 对于拥有Lock对象的线程,如果它在某个条件上不满足时 ...
分类:
其他好文 时间:
2020-04-26 10:39:25
阅读次数:
65
分析解决线程安全问题的锁在使用中的问题。 场景: 在?个类?有两个int类型的字段a和b,有?个add?法循环1万次对a和b进 ?++操作,有另?个compare?法,同样循环1万次判断a是否?于b,条件成?就打印a和b的值,并判断 a>b是否成?。 代码如下: volatile int a = 1 ...
分类:
编程语言 时间:
2020-04-25 23:56:44
阅读次数:
123
一个变量指向new对象,就是引用,在java中有四种引用,分别是强软弱虚,常见的Object o = new Object(),就是强引用,垃圾回收的时候,强引用不会被回收。 公用类: public class M { @Override protected void finalize() thro ...
分类:
编程语言 时间:
2020-04-21 12:48:05
阅读次数:
56
自动安装证书和描述文件 #解锁 钥匙串 security unlock-keychain -p 电脑密码 $HOME/Library/Keychains/login.keychain # 导入 证书 security import $run_path/$accountDir/$bundleid.p1 ...
分类:
移动开发 时间:
2020-04-14 00:36:07
阅读次数:
112
我们知道,Linux用cache/buffer缓存数据,且有个回刷任务在**适当时候**把脏数据回刷到存储介质中。什么是适当的时候?换句话说,什么时候触发回刷?是脏数据达到多少阈值还是定时触发,或者两者都有?不同场景对触发回刷的时机的需求也不一样,对IO回刷触发时机的选择,是IO性能优化的一个重要方... ...
分类:
系统相关 时间:
2020-04-08 09:53:35
阅读次数:
77
原文地址 不同于传统的多线程并发模型使用共享内存来实现线程间通信的方式,golang 的哲学是通过 channel 进行协程(goroutine)之间的通信来实现数据共享: Do not communicate by sharing memory; instead, share memory by ...
分类:
其他好文 时间:
2020-04-07 18:41:13
阅读次数:
91