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,造成死锁。

  • 相关阅读:
    Binder机制,从Java到C (大纲)
    大陆台湾计算机术语比对
    关于nginx架构探究(2)
    关于nginx架构探究(1)
    关于开源中文搜索引擎架构coreseek中算法详解
    关于linux定时操作cron的理解
    sqlachemy 使用实例
    nginx+uwsgi+flask搭建python-web应用程序
    VC维
    关于zMPLS的设计解析
  • 原文地址:https://www.cnblogs.com/uptothesky/p/8410860.html
Copyright © 2011-2022 走看看