线程同步机制加锁

线程同步机制:

多个线程访问同一资源时,造成数据不一致,此时需对多个线程间进行协调。(例如:银行取钱时线程同时过去,会导致数据判断不正确,此时需将并行的的操作改为串行)

主要上锁(synchronized)方式(3种):

1.在要执行的run方法下加一段synchronizde(一个引用){锁住的部分},这里面的引用需自定义一个类如下代码的Demo类,然后new它的对象,它的引用就是过好礼的引用;

第二种和第三种是相同的,只是写法不同,第二个就是直接在重写的run方法里加个synchronized关键字,第三种是写在run方法下的synchronized(this){锁住的代码块},里面的this从底层里可得知是线程创建的对象的直接调用run。

  Demo dm = new Demo;
    @Override
第二种:    public synchronized void run() {
        // 在成员方法中出现this表示当前正在调用的对象,也就是acc
第三种:        //synchronized(this) {
            System.out.println("线程" + Thread.currentThread().getName() + "启动...");
第一种://synchronized(dm) {  // ok
            //synchronized(new Demo()) { // error
            // 模拟从银行后台数据库查询账户余额的过程
            int temp = getBalance();  // temp = 1000;  temp = 1000;
            // 模拟取款的操作
            if(temp >= 200) {
                System.out.println("正在出钞,请稍后...");
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                temp -= 200; // temp = 800; temp = 800;
                System.out.println("请取走您的钞票!");
            } else {
                System.out.println("账户余额不足,请核对您的账户余额!");
            }
            // 模拟将最新的余额写入后台数据库
            setBalance(temp); //balance = 800;  balance = 800;
        //}
    }
}

class Demo {
}

 上一篇
设计原则———线性(顺序)——二分(折半)查找! 设计原则———线性(顺序)——二分(折半)查找!
设计原则: 1.开闭原则:对扩展开放,对修改关闭,主要extends 2.里氏代换原则:任何父类课出现的地方,子类都可出现,多用继承和多态理念 3.依赖倒转原则:尽量多用抽象类或接口,不是具体实现类, 4.接口隔离原则:尽量依赖
2019-10-29
下一篇 
简单小聊天并记录到硬盘 简单小聊天并记录到硬盘
其中这个boolean是给里面的三目运算符赋值,不是给while循环赋值 package day20; import javafx.scene.input.DataFormat; import java.io.BufferedRea
2019-10-27
  目录