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可以查看相应堆栈信息如下图
部分图省略-死锁查看.png 死锁发现后.png
java还有一个比较直观工具 jconsole : 通过cmd执行命令
image.png
image.png
网友评论