Java
Java 编程语言相关
JJ_Notebook
这个作者很懒,什么都没留下…
展开
-
【并发编程】单例模式:双重检查锁(DCL)方式中的volatile的运用
class Singleton{ // private static Singleton instance; private static volatile Singleton instance; private Singleton(){ } public static Singleton getInstance(){ if (instance==null){ //synchronized 同步代码块内的程序指令可以发生重排序原创 2020-05-25 17:14:43 · 169 阅读 · 0 评论 -
【并发编程】多个线程交替输出的经典例题:wait/notify、await/signal 、park/unpark
package ConcurrentDemo;//经典并发题:利用三个线程交替输出abcabcabcabcimport org.junit.Test;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.LockSupport;import java.util.concurrent.locks.ReentrantLoc原创 2020-05-25 10:59:18 · 344 阅读 · 0 评论 -
【并发编程】如何定位死锁
死锁:多个线程分别占用对方需要的同步资源不放弃,都在等待对方放弃。死锁案例以下案例演示了线程T1,T2出现死锁的情况:线程T1在获得锁1的情况下还想获取线程T2拥有的锁2,而线程T2在拥有锁2的情况下还想获取线程1拥有的锁1。public class DeadLockDemo { public static void main(String[] args) { Object obj1=new Object(); Object obj2=new Object()原创 2020-05-24 16:32:08 · 751 阅读 · 0 评论 -
【并发编程】基本概念:进程与线程,并发与并行
进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存,在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。程序是静态的代码,进程是执行中的程序,是动态的。进程就可以视为程序的一个实例,大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等) ,也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)。线程一个进原创 2020-05-19 16:17:50 · 222 阅读 · 0 评论 -
【Java 笔记】Annotation
/*Annotation:*jdk5.0新增功能*Annotation其实就是到马力的特殊标记,这些标记可以在编译,类加载,运行时被读取*程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息** Annotation常见实例* 示例一:生成文档的相关注解* @author** 示例二:JDK自带注解(编译器注解)* @Override 重写, 标识覆盖它...原创 2020-05-08 00:08:23 · 189 阅读 · 0 评论 -
【Java 笔记】JVM : StringTable
这里写目录标题JVM更新:String Table字节码解释测试代码字节码文件根据字节码文件理解JVM中StringTable的实现String Table编译器调优JVM更新:String Table常量池中的字符串仅仅是字面符号,只有当执行到对应的JVM指令时,才会生成对象,利用串池避免重复创建字符串对象,JDK1.8串池从常量池中移动到Heap中。String table是一个has...原创 2020-04-23 23:00:12 · 818 阅读 · 1 评论 -
【Java 笔记 】直接内存
直接内存是由Unsafe类负责分配和释放的,并不由垃圾回收管理垃圾回收Gc只能管理Java内存,不能管理系统内存import java.nio.ByteBuffer;public class DirectoryMemoryTest { static int _1Gb=1024*1024*1024; public static void main(String[] args...原创 2020-04-23 17:25:42 · 149 阅读 · 0 评论