1-并发编程了解(死锁、jdk死锁的查看方式)

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容