zoukankan      html  css  js  c++  java
  • java 死锁

    package test;
    
    public class LockExer {
        private static String lockA="locka";
        private static String lockB="lockb";
    
        public void methodA() throws Exception {
            synchronized (lockA){
                System.out.println("我是A方法获取锁A:"+Thread.currentThread().getName());
                // 让出CPU执行权,但是不释放锁
                Thread.sleep(1000);
                synchronized (lockB){
                    System.out.println("我是A方法获取锁B:"+Thread.currentThread().getName());
                }
            }
        }
        public void methodB() throws Exception {
            synchronized (lockB){
                System.out.println("我是B方法获取锁B:"+Thread.currentThread().getName());
                // 让出CPU执行权,但是不释放锁
                Thread.sleep(1000);
                synchronized (lockA){
                    System.out.println("我是B方法获取锁A:"+Thread.currentThread().getName());
                }
            }
        }
    
        public static void main(String[] args) {
            LockExer lockExer = new LockExer();
            new Thread(()->{
                try {
                    lockExer.methodA();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }).start();
            new Thread(()->{
                try {
                    lockExer.methodB();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }).start();
            System.out.println("执行完成");
        }
    }
  • 相关阅读:
    Python的词法分析与语法分析
    使用svn log确定分支创建的时间点
    Python的作用域
    SVN的版本日期
    理解SVN关键词BASE,HEAD,COMMITTED,PREV
    SVN的属性
    EL表达式 (详解)
    java jsp el fn
    java防止表单重复提交
    数据库的事务处理
  • 原文地址:https://www.cnblogs.com/honghong75042/p/13218794.html
Copyright © 2011-2022 走看看