zoukankan      html  css  js  c++  java
  • 线程安全

    同步代码块,同步方法,Lock接口

    Object ojb=new Object();

    同步代码块:

    public void run(){
            while(true){
                synchronized (obj) {
                    if(ticket>0){
                        try {
                            Thread.sleep(500);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName()
                                +"窗口卖了第"+ticket--+"张票");
                    }
                }
            }    
        }

    synchronized(obj){aaaaa}

    同步方法:

    aaa();

    public synchronized void aaa(){aaaaaa}

    public void run(){
            while(true){
                sale();
            }    
        }
        //同步方法
        public synchronized void sale(){
            //可能发生安全问题的代码放进来
            if(ticket>0){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()
                        +"窗口卖了第"+ticket--+"张票");
            }
        }

    Lock接口方法:

    private Lock lk=new ReentrantLock()  //创建Lock对象

    lk.lock();       

    aaaaaa;

    lk.unlock();

    private Lock lk=new ReentrantLock();
        //重写run
        public void run(){
            while(true){        
                //获取锁
                lk.lock();
                if(ticket>0){
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName()
                            +"窗口卖了第"+ticket--+"张票");
                }
                //释放锁
                lk.unlock();
            }
        }        
  • 相关阅读:
    高可用、高并发浅析
    正则表达式笔记
    linux下通过脚本切换当前工作目录
    nginx学习笔记
    二进制安全
    负载均衡相关
    有用的shell命令
    TCP服务器/客户端代码示例
    UDP服务器/客户端代码示例
    GCC链接的几个注意点
  • 原文地址:https://www.cnblogs.com/god3064371/p/11738866.html
Copyright © 2011-2022 走看看