摘要:
1、使用Object的wait和notify 运行结果:before waitbefore notifyafter notifyafter wait两线程执行图序: 阅读全文
摘要:
wait()和notify()、notifyAll()是object类的方法,sleep(long times)和yeild()是Thread的方法 (1)、常用的wait方法有wait()和wait(long timeout); void wait() 在其他线程调用此对象的 notify() 方 阅读全文
摘要:
SimpleDateFormat非线程安全主要原因是parse()方法使用calendar来生成返回的Date实例,而每次parse之前,都会把calendar里的相关属性清除掉。 问题是这个calendar是个全局变量,也就是线程共享的。因此就会出现一个线程刚把calendar设置好,另一个线程就 阅读全文
摘要:
内存 瓶颈 cpu 瓶颈 cat /proc/cpuinfo |grep 'processor'|wc -l 查看cpu总体消耗, 包括分项消耗 如user,system,idle, nice等消耗 top 然后shift+h: 显示java线程, 然后shift+M: 按照内存 使用进行排序; s 阅读全文
摘要:
一、Linux和进程内存模型 jvm是一个进程的身份运行在linux系统上,了解linux和进程的内存关系,是理解jvm和Linux内存关系的基础。 硬件、系统、进程三个层面的内存之间的概要关系 1、从硬件上看,linux系统有两部分组成:物理内存和SWAP(位于磁盘),物理内存是linux活动时使 阅读全文
摘要:
package java.util; import sun.misc.SharedSecrets; import java.io.IOException; import java.io.InvalidObjectException; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import ... 阅读全文
摘要:
1、左移( << ) 运算结果: 1012010100 2、右移(>>) 运算结果: 10111 3、无符号右移( >>> ) 我们知道在Java中int类型占32位,可以表示一个正数,也可以表示一个负数。正数换算成二进制后的最高位为0,负数的二进制最高为为1 例如 -5换算成二进制后为: 1111 阅读全文
摘要:
java线程的几种状态转化图: Java线程一共有七个状态,分别是新建(New),就绪(Ready to run),运行中(Running),睡眠(Sleeping),阻塞(Blocked),等待(Waiting),死亡(Dead/Terminate) 线程间的状态转化 1、新建(new) 新建一个 阅读全文
摘要:
对于 Java 锁的分类没有严格意义的规则,我们常说的分类一般都是依据锁的特性、锁的设计、锁的状态等进行归纳整理的,所以常见的分类如下: 公平锁和非公平锁:公平锁是多线程按照锁申请的顺序获取锁,非公平锁就是没有顺序、完全随机,所以会造成优先级反转或者饥饿现象:sychronized就是非公平锁,Re 阅读全文
摘要:
MESI(也称伊利诺斯协议)是一种广泛使用的支持写回策略的缓存一致性协议,该协议被应用在Intel奔腾系列的CPU中。 MESI协议中的状态 CPU中每个缓存行使用的4种状态进行标记(使用额外的两位bit表示) M和E的数据都是本core独有的,不同之处是M状态的数据是dirty(和内存中的不一致) 阅读全文