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可以查看相应堆栈信息如下图


部分图省略-死锁查看.png 死锁发现后.png

java还有一个比较直观工具 jconsole : 通过cmd执行命令


image.png
image.png
上一篇 下一篇

猜你喜欢

热点阅读