Java
文章平均质量分 70
研究 Java 语言实现和 Java 虚拟机技术
说码解字
这个作者很懒,什么都没留下…
展开
-
集合在迭代过程中能否添加、删除或修改元素
modCount表示集合的元素被修改的次数,每次增加或删除一个元素的时候,modCount都会加一,而expectedModCount用于记录在集合遍历之前的modCount,检查这两者是否相等就是为了检查集合在迭代遍历的过程中有没有被修改,如果被修改了,就会在运行时抛出ConcurrentModificationException这个RuntimeException,以提醒开发者集合已经被修改。第一种使用for循环进行遍历时内部使用的就是集合本身的遍历方法,这里不做讨论。2.使用 foreach 遍历。原创 2020-08-13 01:45:47 · 7124 阅读 · 1 评论 -
多线程下的单例模式
用来检查实例是否被创建的代码是线程同步的,也就是说此代码块在同一时刻只能被一个线程执行,但是同步锁(locking)只有在实例没被创建的情况下才起作用。如果单例实例已经被创建了,那么任何线程都能用非同步的方式获取当前的实例,而无需经过线程锁的同步过程,避免了不必要的延迟。如果发生这种情况,第一个线程会首先使用新构造器实例化单例对象,同时第二个线程也会检查单例实例是否为空,由于第一个线程还没完成单例对象的实例化操作,所以第二个线程会发现这个实例是空的,也会开始实例化单例对象。可以通过以下两种方式来实现。原创 2020-07-06 20:25:25 · 354 阅读 · 0 评论 -
Java 局部匿名内部类是否会持有外部类的引用
5:调用Demo$DemoRunnable类的init方法(即参数为Demo的构造方法),将Demo对象作为了参数传递进来。发现生成的类只有一个构造器,参数就是Demo类型,而且保存到内部类本身的this$0字段中。4:aload_0指令将外部类Demo的this对象压栈。用javac命令生成字节码文件,根目录下生成两个文件。以下的分析方法和上面类似,这里给出简化过程。,查看反编译后的代码,根目录下生成两个文件。根目录下生成两个文件。根目录下生成两个文件。原创 2020-08-19 01:13:24 · 1803 阅读 · 0 评论 -
JNI 语法
全称Java Native Interface,主要用于在Java代码中调用非Java代码,以此绕过Java的内存管理和解决Java的性能问题。原创 2020-09-01 22:49:04 · 21997 阅读 · 0 评论