1-并发编程了解(死锁、jdk死锁的查看方式)
2019-11-27 本文已影响0人
极客123
1.了解下串行和并行的区别: 参考各种百度 (针对单核cpu,通过时间片轮询争夺,时间极短)
2.什么时候适合并发编程: 分段下载超大型文件、生产消费模型、任务间断执行等
减少并发的开销: 无所并发编程、CAS
死锁DEMO
public class T1 {
static Object A = new Object();
static Object B = new Object();
public static void main(String[] args) {
new Thread(()->{
synchronized(A){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (B){
System.out.println("吃饭");
}
}
}).start();
new Thread(()->{
synchronized(B){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (A){
System.out.println("喝水");
}
}
}).start();
}
}
可以通过jdk的工具进行简单的查看:
通过jps找到相应的javaid
在通过jstack可以查看相应堆栈信息如下图
![](https://img.haomeiwen.com/i13306964/6b4c462f82977eca.png)
![](https://img.haomeiwen.com/i13306964/84816e1a3d0f48c3.png)
java还有一个比较直观工具 jconsole : 通过cmd执行命令
![](https://img.haomeiwen.com/i13306964/d90825ad63b3c6e4.png)
![](https://img.haomeiwen.com/i13306964/30e4d40c50402792.png)