zoukankan      html  css  js  c++  java
  • java 线程的同步

    Example12_7.java

    public class Example12_7 {
       public static void main(String args[]) {
          Bank bank = new Bank();
          bank.setMoney(200);
          Thread accountant,    //会计
                 cashier;      //出纳
          accountant = new Thread(bank);
          cashier = new Thread(bank);
          accountant.setName("会计");
          cashier.setName("出纳");
          accountant.start();
          cashier.start(); 
       }
    }

    Bank.java

    public class Bank implements Runnable {
       int money=200;
       public void setMoney(int n) {
          money=n;
       }
       public void run() {
          if(Thread.currentThread().getName().equals("会计")) 
             saveOrTake(300);
          else if(Thread.currentThread().getName().equals("出纳"))
             saveOrTake(150);;
       }
        public synchronized void saveOrTake(int amount) { //存取方法
          if(Thread.currentThread().getName().equals("会计")) {
             for(int i=1;i<=3;i++) { 
                 money=money+amount/3;      //每存入amount/3,稍歇一下
                 System.out.println(Thread.currentThread().getName()+
                                   "存入"+amount/3+",帐上有"+money+"万,休息一会再存");
                 try { Thread.sleep(1000);  //这时出纳仍不能使用saveOrTake方法 
                 }                       
                 catch(InterruptedException e){}
             }
          }
          else if(Thread.currentThread().getName().equals("出纳")) {
             for(int i=1;i<=3;i++) { //出纳使用存取方法取出60
                 money=money-amount/3;   //每取出amount/3,稍歇一下
                 System.out.println(Thread.currentThread().getName()+
                                   "取出"+amount/3+"帐上有"+money+"万,休息一会再取");
                 try { Thread.sleep(1000);       //这时会计仍不能使用saveOrTake方法
                 }                         
                 catch(InterruptedException e){}
             }
          }
       }
    }
  • 相关阅读:
    Vue--爬坑
    小程序--爬坑
    同源策略
    如何更改placeholder属性中文字颜色
    vue 项目上传到码云,push时error: failed to push some refs to 'https://gitee.com/mawenrou/vue_ht.git'
    node服务端口被占用
    webpack配置自动打包重新运行npm run dev出现报错
    解决回调地狱
    Apache Spark
    RAM computer
  • 原文地址:https://www.cnblogs.com/yihujiu/p/5991158.html
Copyright © 2011-2022 走看看