zoukankan      html  css  js  c++  java
  • Java多线程之互斥锁Syncharnized

    public class Bank {
        private int money;
        private String name;
    
        public Bank(String name, int money) {
            this.money = money;
            this.name = name;
        }
    
        //存款
        public synchronized void deposit(int m) {
            money += m;
        }
    
        //取款
        public synchronized boolean withdraw(int m) {
            if (money >= m) {
                money -= m;
                return true;    //取款成功
            } else {
                return false;  //余额不足
            }
        }
    
        public String getName() {
            return name;
        }
    }
    

      如上所述,如果有一个线程正在运行Bank实例的deposit方法,那么其他线程无法运行这个实例中的deposit方法和withdraw方法,但未加锁的getName方法不受影响。当使用完syncharonized的方法运行完这个线程后,就会释放锁

    线程的互斥机制称之为监视(monitor),另外,获取锁有时候也叫做拥有(own)监视或者持有(hold)锁。

    当前线程是否已获得某一个对象的锁可以通过Thread.holdsLock方法来确定。当前线程已经获得对象obj的锁时,可使用assert像下面来表示

    assert Thread.holdsLock(obj);

  • 相关阅读:
    next_permutation( ) 和prev_permutation( ) 全排列函数
    F
    STL入门
    H
    C
    提交按钮组件
    JScorllPane面板(带滚轮的JPane)
    JPanel画板
    网络布局管理器
    边界布局管理器
  • 原文地址:https://www.cnblogs.com/gegelaopiaoke/p/11113905.html
Copyright © 2011-2022 走看看