首页 > 编程语言 > 详细

多线程环境下的线程不安全问题(2)

时间:2015-05-26 22:49:19      阅读:286      评论:0      收藏:0      [点我收藏+]
多线程环境下的线程不安全问题(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()+"余额不足,取钱失败!" );
          }
     }
}

运行结果:

技术分享




多线程环境下的线程不安全问题(2)

原文:http://www.cnblogs.com/ZhangJinkun/p/4531684.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!