首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Java

Java中的分很多种类,按照场景的不同、特性的不同等分为了很多类,下面就来讲讲Java中锁的概念: 自旋锁:是指当一个线程在获取锁的时候,该锁已经被其他线程占用,则该线程会循环等待,并会不断检查是否成功获取锁...Java中悲观锁和乐观锁的实现 在Java语言中,对于悲观锁和乐观锁有不同的实现。 synchronized关键字和Lock相关实现类都是悲观锁。...而Java中的乐观锁最常采用的是CAS算法。...悲观锁和乐观锁的应用场景 悲观锁适用于写多读少的场景,操作资源的时候先加锁可以保证资源的正确性 乐观锁适用于读多写少的场景, 不加锁可以让读取数据的效率大幅增强 自旋锁和适应性自旋锁 阻塞或唤醒一个Java...在HotSpot虚拟机的Java对象头中,有两部分的数据Mark Word(标记字段)、Klass Pointer(类型指针)。

26920

Java HashMap那点

在介绍集合存储之前需要指出一点:虽然集合号称存储的是 Java 对象,但实际上并不会真正将 Java 对象放入 Set 集合中,只是在 Set 集合中保留这些对象的引用而言。...也就是说:Java 集合实际上是多个引用变量所组成的集合,这些引用变量指向实际的 Java 对象。...集合和引用 就像引用类型的数组一样,当我们把 Java 对象放入数组之时,并不是真正的把 Java 对象放入数组中,只是把对象的引用放入数组中,每个数组元素都是一个引用变量。...看 HashMap 类的 get(K key) 方法代码: /** * Java学习交流QQ群:589809992 我们一起学Java!...我有一个微信公众号,经常会分享一些Java技术相关的干货。如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。

97600

java异常那些

在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常,异常处理机制的原因就是告诉你:这里可能会或者已经产生了错误,您的程序出现了不正常的情况,...Java中所有的异常类都继承自父类Throwable Throwable下有两个之类Error(错误)和Exception(异常) 错误:Error类以及他的子类的实例,代表了JVM本身的错误。...可以被Java异常处理机制使用,是异常处理的核心。...Java中异常主要有两种:检查异常和非检查异常 非检查异常: Error和RuntimeException类及其之类,javac在编译时,不会提示和发现这样的异常,不要求在程序处理这些异常 检查异常

40310

Java 引用逃逸那些

前言 为了对线上程序的性能进行优化分析, 最近在看广受推荐的《深入理解Java虚拟机》,整本书的内容不少, 目前只是根据自己所需的进行阅读, 在后续读完整本内容配合笔记再写篇博客来记录下.而现在阅读过程中...,发现 引用逃逸 和 逃逸分析这个两个概念 并不太了解,还容易混淆,于是就写下这篇博客来帮助下认识 Java 中的 引用逃逸 和 逃逸分析....标量替换优化 标量是指一个无法再分解成其他更小数据的数据,比如Java中基本数据类型和Reference类型.对应的就是聚合量,可以继续分解其数据,如Java的对象.而标量替换就是把Java对象访问导的成员变量作为局部变量直接使用...然后用 jps 指令查看该Java进程的PID, 并通过 jmap -histo pid 查看该程序堆上的对象分布情况,结果如下: ?...参考资料 this 引用逃逸 Java并发编程之this逃逸问题 《深入理解Java虚拟机》 浅谈HotSpot逃逸分析

1.6K10

java反射的二三

java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息,诸如:类变量,构造函数,方法,修饰符。 二、反射机制的优点与缺点 优点:运行时确定类型,绑定对象。...动态编译最大限度发挥了java的灵活性,体现了多 态的应用,有以降低类之间的藕合性。...的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石,而一般应用层面很少用。...它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。...打开熟悉的IDE,寻找你的Java代码的内部依赖,很容易吧。现在,使用反射来替换掉你的代码然后再试一下,结果如何呢?如果通过反射来修改已经封装好的对象状态,那么结果将会变得更加不可控。

67380

Java内部类那些

Java中的内部类又分为非静态内部类(匿名内部类也是非静态的内部类)和静态内部类,两者与外部类的关系是不一样的,创建的方式也不一样。...1 非静态内部类 Java的非静态内部类在构造的时候,会将外部类的引用传递进来,并且作为内部类的一个属性,因此,内部类会隐式地持有其外部类的引用。...也就是非静态内部类在构造的时候需要有一个外部类的实例传递进来进行构造,不能像普通的Java类那样直接就可以通过 new来生成;一个简单的例子如下: 1 import java.util.ArrayList...; 2 import java.util.LinkedList; 3 import java.util.List; 4 import java.util.Queue; 5 import java.util.Scanner...类的创建方式一样,执行第21行代码就可以得到如下结果: 1 string:Java 2 show 3 杂谈 Java的非静态内部类的这种创建方式,会隐式地持有外部类的引用,而且默认情况下这个引用是强引用

21810

java反射的二三

java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息,诸如:类变量,构造函数,方法,修饰符。 二、反射机制的优点与缺点 优点:运行时确定类型,绑定对象。...动态编译最大限度发挥了java的灵活性,体现了多 态的应用,有以降低类之间的藕合性。...的反射机制在做基础框架的时候非常有用,有一句话这么说来着:反射机制是很多Java框架的基石,而一般应用层面很少用。...它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。...打开熟悉的IDE,寻找你的Java代码的内部依赖,很容易吧。现在,使用反射来替换掉你的代码然后再试一下,结果如何呢?如果通过反射来修改已经封装好的对象状态,那么结果将会变得更加不可控。

978110

Java线程池的那些

熟悉java多线程的朋友一定十分了解java的线程池,jdk中的核心实现类为java.util.concurrent.ThreadPoolExecutor。...现在问题来了,jdk为什么要提供java线程池?使用java线程池对于每次都创建一个新Thread有什么优势? 对线程池的误解 很长一段时间里我一直以为java线程池是为了提高多线程下创建线程的效率。...乍一看,大神的思路就是不一样:java线程池是为了防止java线程占用太多资源? 虽然是java大神的访谈,但是也不能什么都信,你说占资源就占资源?还是得写测试用例测一下。...首先验证下我的理解: java线程池和创建java线程哪个效率高? 直接上测试用例: ?...浅谈java线程池 上文介绍了java线程池启动太多会造成OOM,使用java线程池也应该设置合理的线程数数量;否则应用可能十分不稳定。然而该如何设置这个数量呢?

69010

Java 最困扰你的那些

Try-catch 声明之殇 虽然我才刚刚开始编写 Java 程序,但是在Java 中实现让程序停顿一些时间然后继续运行这件事情已经复杂的令我震惊。...没有代理 (尽管我听说 Java 8 中可能引入了代理或类似机制,但我还没细看)。 我同样痛恨很多 Java 库中引入模块的方式(比如根据名称加载模块)。...找不到爱… 我恨 Java,就是单纯的恨。负责任地说,我从不使用 Java 写程序的最大因素就是因为我恨它。还有一点就是JRE糟糕的模块化。...没有getter、setter Java还缺少getter和setter注解。这样可以更简单的添加和移除模板代码。 缺乏亮点 Java 缺少一些杀手级的模块。...有了可写的集合接口,Java 将会变得更加类型安全。 缺少表达能力。在用过Scala (或是最新的PL)之后, 你会觉得Java 非常的繁琐。这是最常见的关于Java 的吐槽,但它这就是事实。

80180
领券