zoukankan      html  css  js  c++  java
  • Java 死锁优化

    死锁示例1

    public class SyncThread implements Runnable{
        private Object obj1;
        private Object obj2;
    
        public SyncThread(Object obj1, Object obj2) {
            this.obj1 = obj1;
            this.obj2 = obj2;
        }
    
        @Override
        public void run() {
            String name=Thread.currentThread().getName();
            System.out.println(name+" acquiring lock on "+obj1);
            synchronized (obj1){
                System.out.println(name+" acquired lock on "+obj1);
                work();
                System.out.println(name+" acquiring lock on "+obj2);
                synchronized (obj2){
                    System.out.println(name+" acquired lock on "+obj2);
                    work();
                }
                System.out.println(name+" released lock on "+obj2);
            }
            System.out.println(name+" released lock on "+obj1);
            System.out.println(name+" finished execution.");
    
        }
        void work(){
            try {
                Thread.sleep(30000);
            }catch (InterruptedException e){
                e.printStackTrace();
            }
        }
    }
    View Code

    调用代码

    public class ThreadDeadLock {
        public static void main(String[] args) throws InterruptedException {
            Object obj1=new Object();
            Object obj2=new Object();
            Object obj3=new Object();
            Thread t1=new Thread(new SyncThread(obj1,obj2),"t1");
            Thread t2=new Thread(new SyncThread(obj2,obj3),"t2");
            Thread t3=new Thread(new SyncThread(obj3,obj1),"t3");
            t1.start();
            Thread.sleep(5000);
            t2.start();
            Thread.sleep(5000);
            t3.start();
        }
    
    
    }
    View Code

    这里obj1等待obj2,obj2等待obj3,obj3等待obj1,造成死锁。

  • 相关阅读:
    其他魔术方法
    类型约束和类的魔术常量
    PHP对象遍历、内置标准类与数据转对象
    类的自动加载与对象的克隆
    PHP重载与接口
    面向对象
    PHP基础
    地下城与勇士的项目整理
    mysql建表
    jQuery
  • 原文地址:https://www.cnblogs.com/uptothesky/p/8410860.html
Copyright © 2011-2022 走看看