服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

[java100例]065、线程同步

/**
 * <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);


 }
}

扫描关注微信公众号