• 死锁必须synchronize套synchronize


    package com.Thread;
     
    public class DeathSynchronized {
           public static void main(String[] args) {
                 //资源
                Object g = new Object();
                Object m = new Object();
                 //创建线程
                Test1 t1 = new Test1(g,m);
                Test2 t2 = new Test2(g,m);
                Thread proxy = new Thread(t1);
                Thread proxy2 = new Thread(t2);
                 //启动线程
                proxy.start();
                proxy2.start();
          }
    }
     
    class Test1 implements Runnable {
          Object goods ;
          Object money ;
           public Test1(Object goods, Object money) {
                 this.goods = goods;
                 this.money = money;
          }
     
           @Override
           public void run() {
                 while(true ) {
                       try {
                            test();
                      } catch (Exception e) {
                            e.printStackTrace();
                      }
                }
          }
          
           public void test(){
                 synchronized(goods ){
                       try {
                            Thread. sleep(1000);
                      } catch (InterruptedException e) {
                            e.printStackTrace();
                      }
                       synchronized(money ){
                      }
                      System. out.println("一挥手交钱、、、、" );
                }
          }
          
    }
    class Test2 implements Runnable {
          Object goods ;
          Object money ;
           public Test2(Object goods, Object money) {
                 this.goods = goods;
                 this.money = money;
          }
     
           @Override
           public void run() {
                 while(true ) {
                       try {
                             test();
                      } catch (Exception e) {
                            e.printStackTrace();
                      }
                }
          }
          
           public void test (){
                 synchronized(money ){
                       try {
                            Thread. sleep(5000);
                      } catch (InterruptedException e) {
                            e.printStackTrace();
                      }
                       synchronized(goods ){
                            
                      }
                      System. out.println("一挥手交huo、、、、" );
                }
          }
          
    }
  • 相关阅读:
    java工程师面试总结
    多线程面试题
    冒个泡
    给大家简单介绍一下:Elasticsearch
    单点登录
    (jQuery)Cookie记住用户名和密码
    我们需要循序渐进的代码重构
    Java序列化(Serialization)的理解
    Java对象序列化
    【武】做一个有自控力的人,开始你的时间规划吧!
  • 原文地址:https://www.cnblogs.com/king-/p/4389732.html
Copyright © 2020-2023  润新知