• 多线程安全问题——访问共享


    同步代码块Synchronized(锁对象){可能出现重写爱情问题的代码

    }

    1.通过代码块中的锁对象,可以使用任意对象

    2.但必须保证多个线程使用的锁对象是同一个

    3.锁对象作用:

    把同步代码块锁住只让一个线程执行

    //模拟卖票
    //创建三个进程,同时开启,对共享的票进行出售
    public class Demo02Ticket {
        public static void main(String[] args) {
            RunnableImpl run=new RunnableImpl();
            Thread t1=new Thread(run);
            Thread t2=new Thread(run);
            Thread t3=new Thread(run);
            t1.start();
            t2.start();
            t3.start();
    
        }
    }

    锁对象解决安全重写和错误问题:

    import java.util.Objects;
    
    public class RunnableImpl implements Runnable {
        private int ticket=100;
        Object obj=new Object();//创建锁对象
        @Override
        public void run() {
            while (true){
                synchronized (obj){
                    if (ticket>0){
                        //票存在,卖票ticket
                        try {
                            Thread.sleep(10);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()+"-->正在卖"+ticket+"张票");
                        ticket--;
                    }
                }
    
            }
    
        }
    }
  • 相关阅读:
    面向对象之继承
    面向对象
    Python—文件和内建函数 open(),file()
    如何在命令行打开文件夹?
    Anaconda在win10下的安装
    Python—for循环和range()内建函数
    python—基础练习2
    python—数据类型
    python—字符编码
    python—基础练习1
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/13735336.html
Copyright © 2020-2023  润新知