线程同步

一世执手 提交于 2019-12-02 16:27:16

synchronized(this){同步块}


第一种处理方式  this 必须是唯一的   


在后续的开发中,我们一般用这个唯一的类的字节码信息来表示唯一的。

boolean getmoney(int m) throws InterruptedException {
       synchronized (Money.class){
           if (m<=money){
               Thread.sleep(1);
               money-=m;
               System.out.println(Thread.currentThread().getName()+"取钱成功,剩余"+money);
               return true;
           }
       }
        System.out.println(Thread.currentThread().getName()+"余额不足,剩余"+money);
        return false;
    }

 

 

第二种
synchronized   线程同步方法
synchronized boolean getmoney(int m) throws InterruptedException {
   
       if (m<=money){
           Thread.sleep(1);
           money-=m;
           System.out.println(Thread.currentThread().getName()+"取钱成功,剩余"+money);
           return true;
       }
 
    System.out.println(Thread.currentThread().getName()+"余额不足,剩余"+money);
    return false;
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!