并发调试和JDK8新特性
多线程调试的方法
困难:多线程情况下执行顺序及阶段是难以确定。
方法:
使用条件断点,在Debug任务栏中查看线程下堆栈的使用状况,从而判断多线程的异常的原因。
线程dump及分析
jps 获取所有Java进程的pid
jstack pid 导出该进程下运行的所有线程及其运行状况
JDK8对并发的新支持
- LongAdder:用于操作Long类型,在AtomicInteger上进行了热点分离,能够提高CAS更新的成功率。
- CompletableFuture:对Future模式的应用即实现,支持流调用、异步执行,它支持完成后得到通知。
- StampedLocker:是对读写锁的改进,读不阻塞写。