龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

[JAVA100例]065、线程同步

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
/** * pTitle: 线程同步/p * pDescription: 通过使用同步锁实现对共享数据的操作/p * pCopyright: Copyright (c) 2003/p * pFilename: SyThreadDemo.Java/p * @version 1.0 */ /** *br类说明:主程序 *br功能描述:构造两个

  /**
   * <p>Title: 线程同步</p>
   * <p>Description: 通过使用同步锁实现对共享数据的操作</p>
   * <p>Copyright: Copyright (c) 2003</p>
   * <p>Filename: SyThreadDemo.Java</p>
   * @version 1.0
   */
  /**
   *<br>类说明:主程序
   *<br>功能描述:构造两个线程,并启动它们
   */
  public class SyThreadDemo
  {
   public static void main (String [] args)
   {
    trade ft = new trade ();
    addThread tt1 = new addThread (ft, "add");
    decThread tt2 = new decThread (ft, "dec");
    tt1.start ();
    tt2.start ();
   }
  }
  /**
   *<br>类说明:同步类
   *<br>功能描述:保存共享数据,
   */
  class trade
  {
    private String transName;
    private double amount;
  /**
   *<br>方法说明:更新数据
   *<br>输入参数:String transName 操作名称
   *<br>输入参数:double amount 资金数量
   *<br>返回类型:
   */
    synchronized void update (String transName, double amount)
    {
     this.transName = transName;
     this.amount = amount;
     System.out.println (this.transName + " " + this.amount);
    }
  }
  /**
   *<br>类说明:添加资金
   *<br>功能描述:单线程,调用trade.update()方法,修改数据
   */
  class addThread extends Thread
  {
    private trade ft;
    addThread (trade ft, String name)
    {
     super (name);
     this.ft = ft;
    }
    public void run ()
    {
     for (int i = 0; i < 10; i++)
       ft.update ("add", 2000.0);
   }
  }
  /**
   *<br>类说明:减少资金
   *<br>功能描述:单线程,调用trade.update()方法,修改数据
   */
  class decThread extends Thread
  {
    private trade fd;
    decThread (trade fd, String name)
    {
     super (name);
     this.fd = fd;
    }
  /**
   *<br>方法说明:线程主体
   *<br>输入参数:
   *<br>返回类型:
   */
    public void run ()
    {
     for (int i = 0; i < 10; i++)
       fd.update ("dec", -2000.0);


  

   }
  }


  
精彩图集

赞助商链接