Unsafe 工具类|学习笔记

简介: 快速学习 Unsafe 工具类

开发者学堂课程【Java 高级编程Unsafe 工具类】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/20/detail/384


Unsafe 工具类


一、 反射

反射是 java 第一大特点,一旦打开了反射的大门,就可以有了更加丰富的类设计形式。

除了 jvm 本身支持的反射处理之外,在 java 里面也提供有一个 unsafe 类(不安全的操作),这个类的主要特点是可以利用反射来获取对象,并且直接使用底层的 c 加加来代替 gvm 执行,即可以绕过 jvm 的相关的对象的管理机制。

如果一旦使用了 unsafe 类,那么你的项目之中将无法继续使用 gvm 的内存管理机制以及垃圾回收处理。

但是如果要想使用 unsafe 类,首先需要确认一下这个类之中定义的构造方法与常量问题:

构造方法:

Private Unsafe(){}

 

私有常量:

Private static final Unsafe theUnsafe = new Unsafe();

但是需要注意的是,在这个 unsafe 类里面并没有提供 Static 方法,即不能够通过类似于传统的单例设计模式之中提供的样式来进行操作,如果要想获得这个类的对象,就必须利用反射机制来完成。

代码如下:

package cn.mldn.demo;

import java.lang.reflect.Field;

import sun.misc.Unsafe;

public class JavaAPIDemo {

public static void main(String[] args) throws Exception {

Fieldfield= Unsafe.class.getDeclaredField("theUnsafe");field.setAccessible(true);

Unsafe unsafeobject =(u.Field.get(null);

}

}

代码执行正常完成。

在传统的开发之中,一个程序类必须要通过实例化对象后,才可以调用类中的普通方法,尤其是以单例设计模式为例。

 

Singleton.getInstance().print();

class Singleton {

private static final Singleton INSTANCE = new Singleton();

private Singleton() (

System.out.println("***** Singleton英构道******);

public static Singleton getInstance(){

return INSTANCE ;

 

代码相当于利用 unsafe 类绕过了 jvm 的管理机制,可以在没有实例化对象的情况下,获取一 个 singleton 类实例化对象。

Unsafe 最大的特征就是绕过实例化对象管理。

Unsafe 只能够说为我们的开发提供了一些更加方便的处理机制,但是这种操作由于不受 jvm 的操作管理,如果不是必须的情况下,不建议使用,而讲解这个类,主要的目的是帮助大家巩固对于反射的理解,同时也帮助大家在笔试时,如果问到单例设计模式的情况下,也可以追加一个 unsafe,以加深对这一概念的理解,从而获得较好效果。

相关文章
|
SQL 关系型数据库 MySQL
经典SQL练习题(MySQL版)
选取了一些经典的SQL练习题,附上了代码和运行结果。
20542 1
|
6月前
|
算法 Java 数据库连接
2025 最新 Java 面试资料及详细答案整理
这是一份全面的Java面试资料整合,涵盖基础到进阶技术知识点,包括Java核心语法、面向对象编程、异常处理、集合框架、JVM原理、多线程与并发编程、网络编程等。同时深入解析主流框架如Spring、MyBatis,以及项目实战经验分享。资料结合实例辅助理解,助你高效备考,提升面试竞争力。资源地址:[点击获取](https://pan.quark.cn/s/14fcf913bae6)。
1238 6
|
存储 负载均衡 监控
redis 集群模式(redis cluster)介绍
redis 集群模式(redis cluster)介绍
|
测试技术 Linux API
超详细Postman下载安装与使用汉化版教程
Postman 是一款常用的 API 测试工具,可以方便地进行接口测试、调试和文档编写。本文将详细介绍如何下载安装 Postman 并汉化,包括每个步骤的详细说明。
超详细Postman下载安装与使用汉化版教程
|
存储 运维 NoSQL
redis集群详细搭建方式(含原理、操作指令、异常处理)
1.概述 概念: redis集群是从3.0版本开始支持的一个功能,是redis的一种水平扩展方式,将全局数据分散的存储在N个结点上,从而来将请求流量打散到各个结点上,减轻单结点压力。 实现原理: redis的集群进行数据散列时使用了一致性hash算法的思想,如果对一致性hash算法有兴趣可以参照博主的另一篇文章:
1471 0
|
1天前
|
数据采集 人工智能 安全
|
11天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
977 151
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话