当前位置:网站首页>并发模式之单例和不变模式
并发模式之单例和不变模式
2022-07-29 02:19:00 【程序猫大刚】
单例模式
单例模式是为了确保系统中某个类只存在一个实例。
在多种写法中,推荐使用静态内部类方式,利用类加载一次特性确保只有一个实例(线程安全),
同时具备无锁和懒创建优点。
示例:
public class StaticInnerClassSingleton {
// 私有化构造方法
private StaticInnerClassSingleton(){}
// 内部类
static class Holder{
static StaticInnerClassSingleton INSTANCE = new StaticInnerClassSingleton();
}
// 获取实例对象
public static StaticInnerClassSingleton getInstance(){
return Holder.INSTANCE;
}
public static void main(String[] args) {
for(int i=0;i<10;i++){
new Thread(()->{
System.out.println(StaticInnerClassSingleton.getInstance());
}).start();
}
}
}
不变模式
在并发场景中,不变对象是不需要同步操作的。(因为对象不会改变,所以多个线程访问不会出现不一致问题)
特征:
- class被修饰为final
- 属性是私有且被final修饰的
JDK中所有的元数据类、包装类都是使用不变模式实现的。
java.lang.String
java.lang.Boolean
java.lang.Byte
java.lang.Character
java.lang.Double
java.lang.Float
java.lang.Integer
java.lang.Long
java.lang.Short
例子:
public final class FinalCat {// final 确保无子类
private final String name;// final 确保属性
private final Integer age;
public FinalCat(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
@Override
public String toString() {
return "FinalCat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public static void main(String[] args) {
FinalCat cat = new FinalCat("皮侃子", 4);
System.out.println(cat);
}
}
边栏推荐
- Cuda-npp image and video processing
- ECCV 2022 | airdet: a small sample target detection method without fine tuning
- 11.书写规则-伪目标
- Multimodal unsupervised image to image translation
- DHCP协议详细解析
- 3D intelligent factory process flow visualization interactive display application advantages
- 云开发打工人必备上班摸鱼划水微信小程序源码
- 6-21漏洞利用-mysql弱口令破解
- Three implementation methods of Servlet
- Workflow of wireless vibrating wire acquisition system
猜你喜欢

K210——声源定位、声音识别

Polygon zkEVM——Hermez 2.0简介

ASEMI整流桥S25VB100,S25VB100参数,S25VB100应用

ECCV 2022 | AirDet:无需微调的小样本目标检测方法

一款好看的iapp捐赠榜单源码

Wechat applet - Advanced chapter Lin UI component library source code analysis button component (II)

Mqtt routine

Where, having, group by, order by, is null, not in, subquery, delete, date function

多重继承与派生类成员标识

【报错】node:internal/modules/cjs/loader:936 【解决方法】
随机推荐
图书管理系统
nacos名字的由来
童年的快乐时光
How to migrate thinkphp5 projects to Alibaba cloud function computing to cope with traffic peaks?
云开发打工人必备上班摸鱼划水微信小程序源码
6-21漏洞利用-mysql弱口令破解
K210——声源定位、声音识别
Code random notes_ Hash_ 349 intersection of two numbers
JMeter's BeanShell generates MD5 encrypted data and writes it to the database
etcd实现大规模服务治理应用实战
Redis master-slave mode, sentinel cluster, fragment cluster
C语言:小乐乐与进制转换
In depth analysis - Pretreatment
QT compilation of IOT management platform 48 characteristic function design
全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
Code implementation - the greatest common factor of polynomials (linear algebra)
ROCBOSS开源微社区轻论坛类源码
Multimodal unsupervised image to image translation
第六天笔记
区区区间---线段树lazy标记板子题