一、创建型设计模式 1、单例模式(Singleton):保证进程中,某个类只有一个实例 多线程需要双判断(if)+锁(lock) if(){ lock(){ if(){ } } } 即使是单例的,变量也不是线程安全的,单例不是为了保证线程安全 单例的好处就是单例,就是全局唯一的一个实例 应对一些特殊 ...
分类:
其他好文 时间:
2020-05-04 17:14:44
阅读次数:
59
定义 确保一个类在任何情况下,如运行容器中,都只有一个实例,实现构造函数私有化,并提供一个全局访问点。 实现方式 1 、饿汉式 public class HungrySingleton { private static final HungrySingleton INSTANCE = new Hun ...
分类:
其他好文 时间:
2020-05-03 20:42:23
阅读次数:
65
HashMap的线程不安全主要体现在下面两个方面: 在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况。 扩容逆序和环形:见上一篇文章中的头插法以及bilibili视频,https://www.bilibili.com/video/BV1vE411v7cR?p=4 数据丢失: 在JD ...
分类:
编程语言 时间:
2020-05-03 14:28:54
阅读次数:
158
栈 栈(Stack)是一个后进先出(LIFO)的数据结构,直接上图 简单来说栈只有两种操作,出栈和入栈,直接来看一下java.util.Stack里面的实现。 Stack继承自Vector一个线程安全的容器(动态数组) 入栈操作,调用了Vector的addElement函数,向动态数组末尾添加一个元 ...
分类:
其他好文 时间:
2020-05-02 21:17:06
阅读次数:
81
本文为面试必备系列篇,不深入叙述,具体细节可自行查询。 可能会问的问题 1、用过ConcurrentHashMap吗?2、为什么要用ConcurrentHashMap?3、HashMap与HashTable的区别,引出ConcurrentHashMap…4、HashMap在多线程环境下存在线程安全问 ...
分类:
其他好文 时间:
2020-05-02 20:34:48
阅读次数:
53
定义 确保某个类只有一个实例 实现方式 饿汉式加载(线程安全) 等价于 懒汉式加载 非线程安全 线程安全 1. Double Check 2. 借助Lazy "示例代码 github" ...
分类:
其他好文 时间:
2020-05-02 09:27:16
阅读次数:
58
前言 并发编程是java中不可或缺的模块。与串行程序相比,它们能使复杂的异步代码变得简单,从而极大地简化了复杂系统的开发。此外,想要充分发挥多处理器系统的强大计算能力,最简单的方式就是使用线程。随着处理器数量的持续增长,如何高效地使用蝙蝠正变得越来越重要。同时在当今互联网的时代,大量的互联网应用都面 ...
分类:
其他好文 时间:
2020-05-02 00:04:55
阅读次数:
64
统计大串中小串出现的次数(新的解决方案) StringBuffer类 StringBuffer类的概述 我们如果 对字符串进行拼接操作 ,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而 StringBuffer 就可以解决这个问题。 线程安全的可变长度的字符序列 StringBu ...
分类:
编程语言 时间:
2020-05-01 20:55:58
阅读次数:
72
概述 java有各种各样的锁,并且每种锁的特性不同,合理场景下利用锁可以展现出非常高的效率。synchronized内置锁就是Java的一种重量级锁,它能够解决并发编程中出现多个线程同时访问一个共享,可变的临界资源时出现的线程安全问题。让多个线程序列化访问临界资源,同一时刻,只能有一个线程访问临界资 ...
分类:
编程语言 时间:
2020-05-01 01:32:04
阅读次数:
85
String 一、 底层解析 1. JVM底层 在JVM底层中,声明的String变量的地址存储在栈区,而后面的赋值,也就是字符串常量池,在方法区。方法区的常量不重复。 当对字符串进行 重新赋值 ,对现有字符串进行 连接 操作,调用String的replace方法 修改 指定字符或字符串时,都需要重 ...
分类:
其他好文 时间:
2020-05-01 01:23:01
阅读次数:
72