目录

01 java提供的线程安全自增方法

02 线程安全的List集合

03 锁 双重校验(类单例模式)

代码了解单例模式: ->

04 读写锁

--> 模拟注册中心 注册和拉取配置


01 java提供的线程安全自增方法

private AtomicLong atomicLong = new AtomicLong(1);//给一个初始值: 1

atomicLong.getAndIncrement();// 等效a++ :1

atomicLong.incrementAndGet();// 等效++a :2

02 线程安全的List集合

private static List<String> cache = new Vector<>();//不推荐使用(影响性能)

//乐观锁 不会有线程异常了 但是数据依然存在重复

private static CopyOnWriteArrayList<String> cache = new CopyOnWriteArrayList<>();

03 锁 双重校验(类单例模式)

代码了解单例模式: ->

单例模式: 懒汉式 饿汉式 登记式(Spring的IOC) 亲测(多线程测试)_pingzhuyan的博客-CSDN博客

private static CopyOnWriteArrayList<String> cache = new CopyOnWriteArrayList<>();//优化 加一个校验private  static List<String> selectAll() {if (cache.isEmpty()){synchronized (cache){//同步代码块if (cache.isEmpty()) {System.out.println("======>IMITATION GET DATA FROM DATABASE <=======");List<String> cates = Arrays.asList("CateGory-A", "CateGory-B", "CateGory-C");cache.addAll(cates);}}}//模拟数据库请求数据, 添加到本地缓存中return cache;}

04 读写锁

其他锁简介(其他人的文章):

https://www.baidu.com/link?url=7k1DdnF4acONOsWML5xXG2KRLsts8P3BAJlfcKvZ0fW12O-A2pwWWJxSdjBEl3jv&wd=&eqid=eb1c3e7400077870000000026205c70chttps://www.baidu.com/link?url=7k1DdnF4acONOsWML5xXG2KRLsts8P3BAJlfcKvZ0fW12O-A2pwWWJxSdjBEl3jv&wd=&eqid=eb1c3e7400077870000000026205c70c

悲观写 乐观读

这么理解 : 共享排他锁(共享独占锁)”,“多读锁”或者“单写多读锁"

想写 -> 必须等着没有读者 没有写者才可以用 (读写互斥)

--> 模拟注册中心 注册和拉取配置

private static Map<String, String> registryMap = new ConcurrentHashMap<>();private static final ReentrantReadWriteLock readWriteLock =  new ReentrantReadWriteLock();//服务的注册public  static void doRegist(String serviceId, String host) { //悲观写readWriteLock.writeLock().lock(); //写锁try {registryMap.put(serviceId, host);} finally {readWriteLock.writeLock().unlock();//需要手动释放写锁}}//服务的发现(查找)public  static String doLookup(String serviceId) { //乐观读// System.out.println(serviceId);try{readWriteLock.readLock().lock();return registryMap.get(serviceId);}finally {readWriteLock.readLock().unlock();}}

05 ...

java 基础: 一些稀奇古怪的好东西总结 丰富知识面相关推荐

  1. Java基础、多线程、JVM、集合八股文自述(持续更新)

    Java基础.多线程.JVM.集合八股文自述 一.Java基础 1.1 object类有哪些方法? getClass().hashCode().equals().clone().toString(). ...

  2. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天--JAVA基础回顾 这才学习Android的 ...

  3. 简单的介绍一下怎样如何学习Java基础

    在我看来,学习Java最好的方式就是通过书籍(或博客)+动手写代码,辅以视频,通过多写多练,达到熟练掌握的程度.博主曾经看过一篇文章,讲的是费曼学习法,其中讲到学习的四个步骤:选择目标.教学.纠错学习 ...

  4. Java软件架构师所要需的东西

    参考:http://bbs.csdn.net/topics/310148298 这篇博客是csdn首页里的一篇博客,感觉写的不错,应该对那些迷茫的朋友有很多帮助 本文来自CSDN博客,转载请标明出处: ...

  5. java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...

    0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...

  6. Java基础-我所理解的泛型

    Java基础-我所理解的泛型 引用 [java]泛型中,? extends T 与 ? super T 的区别.看法_winrh的博客-CSDN博客_泛型 extends 前言 Java基础系列,我所 ...

  7. Java基础:类加载器

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 什么是类加载器 类加载器就是用来加载类的东西!类加载器也是一个类:ClassLoader 类加载 ...

  8. 生活点滴:java基础知识细化

    生活点滴:java基础知识细化 一.前言 越是对一门语言深入了解,就会发现自己不知道的东西越多,这才是走向了正道,同样的,对于java语言特性的学习,笔者也只是初窥门径. 二.java基础知识思考 i ...

  9. 【转】Java基础知识整理

    本博文内容参考相关博客以及<Java编程思想>整理而成,如有侵权,请联系博主. 转载请注明出处:http://www.cnblogs.com/BYRans/ PDF版下载链接:<Ja ...

  10. JAVA中流水账的实现_流水账式java基础Summary

    来一篇java基础知识的小总结,采用流水账式,不是特意的,而是不知道用什么形式把这些东西联系起来,那就想起什么写些什么吧 关键字:java中赋予特殊含义,具有专门用途的的单词,class.public ...

最新文章

  1. ubuntu 安装 Terminator
  2. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
  3. SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能
  4. c#Md5 32位加密结果少了两个0的原因
  5. 【Pytorch神经网络实战案例】19 神经网络实现估计互信息的功能
  6. BZOJ 2442 [Usaco2011 Open]修剪草坪:单调队列优化dp
  7. USACO 4.3 Street Race(DFS)
  8. vue实现卡片式上下滑动_Vue实现table上下移动功能示例
  9. 体验迟到:果然是魔鬼定律,一路上多种障碍
  10. 惠普T5325 惠普T5565 惠普T5400 瘦客机评测
  11. 2020年下半年软考中级——软件设计师考试总结感想(已过!!!)
  12. 云服务器子系统,超详尽教程!在Windows 10内置Ubuntu子系统上搭建私有云
  13. python 金融风控模型_Python金融大数据风控建模实战 基于机器学习
  14. LIMS实验室系统无纸化管理给实验室带来的帮助
  15. 【Yolov5】训练自己的yolov5模型并集成到安卓应用中【上】——模型训练
  16. 100道练习理解SQL语法
  17. uniapp开发:uniapp之vue3.2开发页面传值的解决方案
  18. (洛谷刷题)P1830 轰炸机III
  19. kali wmap使用教程
  20. Android NDK 概述(Android NDK Overview)

热门文章

  1. A股的日内交易如何进行?
  2. jersey 过滤_Jersey的Filter详解
  3. 小猫钓鱼游戏(c++实现)
  4. 主成分分析结果成分不显著_主成分分析结果
  5. ERROR: could not access file $libdir/postgis-2.3: No such file or director解决方法
  6. WIN11电脑如何使用IE浏览器进行正常办公操作-以建行网银为例
  7. ansys19.0安装破解教程(图文详解)
  8. 怎么缩小gif动图的体积?三步快速压缩gif体积
  9. html 左侧固定导航栏,前端布局-固定导航栏与侧边栏
  10. 手把手教你如何自学计算机,绝对的干货满满!!!