查看系统的线程上下文切换次数
使用vmstat 3
其中cs就是context switch的次数,数值越高代表上线文切换的越频繁,耗时越多。每秒的切换次数可以和进程的总线程数进行比对,如果大于线程总数代表是满负荷运转
java 线程状态之间的跃迁
线程的各个状态及说明如下:
状态名称 | 说明 |
---|---|
NEW | 初始状态 |
RUNNABLE | 运行状态 |
BLOCKED | 阻塞状态 |
WAITING | 等待状态 |
TIME_WAITING | 超时等待状态 |
TERMINATED | 终止状态 |
synchronized 关键字的使用场景
锁的方式 | 锁的对象 | 伪代码 |
---|---|---|
实例方法 | 类的实例对象 | public synchronized void method |
静态方法 | 类对象 | public synchronized static void method |
实例对象 | 类的实例对象 | synchronized (this) |
class对象 | 类对象 | synchronized (A.class) |
普通对象 | 普通对象 | synchronized (o) |
mark 下 通过ReentrantLock中线程等待唤醒的状态跃迁
java queue 方法
方法名称 | 说明 | 是否阻塞 | 是否抛出异常 |
---|---|---|---|
add | 插入 | 否 | 是 |
offer | 插入 | 否 | 是 |
remove | 删除 | 否 | 否 |
poll | 删除 | 否 | 否 |
element | 获取 | 否 | 是 |
peek | 获取 | 否 | 是 |
blocking queue
方法名称 | 说明 | 是否阻塞 | 是否抛出异常 |
---|---|---|---|
put | 插入 | 是 | 否 |
offer 支持超时 | 插入 | 是 | 否 |
take | 删除 | 是 | 否 |
poll 支持超时 | 删除 | 是 | 否 |