zoukankan      html  css  js  c++  java
  • 多线程环境下的线程不安全问题(2)

    多线程环境下的线程不安全问题(2)
    解决上条笔记所提到的线程不安全问题.

    线程安全可以通过使用synchronizaed关键字的方法………

    具体解释:

    使用 synchronized 关键字后,方法就被 同步监视器所锁定,由于多条线程在这里使用的是同一个对象,所以就存在了线程的锁定问题

    ,一个线程的开始必须等待其它线程结束之后,从而保证数据和线程的安全。

    补充:

    观察java源代码,会发现 Vector,StringBuffer 等线程安全的类都采用了  synchronized 关键字来修饰。

    改动Account类:

    public class Account {

         private Integer balance;

         public Account(Integer balance) {
               super();
               this. balance = balance;
         }

         public synchronized Integer getBalance() {
               return balance;
         }

         public void setBalance(Integer balance) {
               this. balance = balance;
         }
         
         public synchronized void draw(Integer drawAccount){
               if( balance>= drawAccount){
                   System. out.println(Thread. currentThread().getName()+"取钱成功,吐出钞票:" +drawAccount );
                   balance-= drawAccount;
                  System. out.println( "余额为:"+balance );
              } else{
                   System. out.println(Thread. currentThread().getName()+"余额不足,取钱失败!" );
              }
         }
    }

    运行结果:





  • 相关阅读:
    【python】虎牙直播爬虫项目
    【python】读取文件夹中所有文件名,os.walk( )
    【人工智能】使用百度api批量识别图片上的文字,进阶版
    【人工智能】使用百度api识别图片上的文字
    【python】词云图,超简单入门版
    【python】词云图,轮廓+着色,进阶版
    【python】词云图,进阶版
    【python】词云图,入门版
    【python】前程无忧51job岗位招聘信息爬虫程序,自动翻页,进阶版
    【HTML】使用百度地图api制作地图热力图,带控件,进阶版
  • 原文地址:https://www.cnblogs.com/ZhangJinkun/p/4531684.html
Copyright © 2011-2022 走看看