zoukankan      html  css  js  c++  java
  • 多线程安全问题——访问共享

    同步代码块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--;
                    }
                }
    
            }
    
        }
    }
  • 相关阅读:
    多选择文件打开对话框
    DirectoryExists
    获取IP地址
    获取WINDOWS特殊文件夹
    WPF WebBrowser
    DELPHI TDownLoadURL下载网络文件
    同步窗体移动 FormMove
    FireMonkey 使用Webbrowser
    网页截取图片
    FormMove
  • 原文地址:https://www.cnblogs.com/cy2268540857/p/13735336.html
Copyright © 2011-2022 走看看