摘要:
平台无关性 不同平台的不同java虚拟机,都执行同一种字节码文件,即Class文件 语言无关性 Java虚拟机不止能执行java程序,还有Clojure、Groovy、JRuby、Jython、Scala等 它不与某种语言绑定,而是和Class文件,这种二进制文件绑定。 阅读全文
摘要:
线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。 Java 提供 ThreadLocal 类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web 服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。 阅读全文
摘要:
睡眠 睡眠都是由用户控制的,睡眠恢复则是自动完成的,睡眠时间到了则恢复到就绪态,睡眠时线程不会释放对象锁。 eg: Thread.sleep() 备注:sleep方法属于Thread类 挂起 挂起是由用户控制的,挂起恢复需要用户主动控制,挂起时线程不会释放对象锁。 eg: thread1.suspe 阅读全文
摘要:
JVM的内存分为堆、栈、方法区和程序计数器4个区域 存储内容:基本类型,对象引用,对象本身,class,常量,static变量 堆: 拥有者:所有线程 内容:对象本身,不存放基本类型和对象引用 垃圾回收:由gc控制,java的垃圾回收主要针对堆 栈: 分为虚拟机栈和本地方法栈 虚拟机栈: java方 阅读全文
摘要:
常量与变量(数学层面) 常量:就是有固定值的量 变量:没有固定值的量,只是用字母表示 java常量分2种,一般常量与不可变常量 一般常量 一个值,就是这个值本身,如8种基本类型、文本字符串等。 不可变常量,(也就是不可变的变量) 就是被我们都知道的关键字final修饰的变量。 常量池分3种,字符串常 阅读全文
摘要:
final的4种用法: 1. 修饰成员变量,此变量不可变 2. 修饰方法参数,此参数不能被改变 3. 修饰成员方法,此方法不能被覆盖 4. 修饰类,此类不能被继承 static的4种用法 1. 修饰成员变量,此变量即为类的成员,从而实现所有对象对于该成员的共享。 2. 修饰成员方法,将其变为类方法, 阅读全文
摘要:
先说结论: 精度小于int的数值(char、byte、short)在运算时会自动转换为int类型,再进行计算。 eg: 阅读全文
摘要:
监视器是一种同步结构,它基于互斥锁,允许线程同时互斥(使用锁)和协作, 互斥 当一个线程访问受保护的数据时,如果没有其他线程在等待,线程获取锁并继续执行。当线程完成执行时,它释放锁并退出监视器。 但如果此时另一个线程已经拥有监视器时,它必须在entry-set中等待。当前面的线程执行完毕退出监视器时 阅读全文
摘要:
== 首先,得说明java数据类型分为基本数据类型和引用数据类型, 基本数据类型有8种: 浮点型:float(4 byte), double(8 byte) 整型:byte(1 byte), short(2 byte), int(4 byte) , long(8 byte) 字符型: char(2 阅读全文
摘要:
本文总结自: https://blog.csdn.net/luckey_zh/article/details/53815694 互斥锁: 若对象有互斥锁,则在任一时刻,只能有一个线程访问对象。类锁、对象锁都属于对象监视器,而对象监视器是基于互斥锁的。 对象监视器,详见: https://www.cn 阅读全文