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

    1. synchronized

    2.Lock

    package com.jack.test2;
    
    import java.util.concurrent.locks.Lock;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class MyRunnable3 implements Runnable {
        int len = 5;
        int tikets = len;
        Object obj = new Object();
        Lock l = new ReentrantLock();
    
        @Override
        public void run() {
            while (true) {
                l.lock();
                try {
                    if (tikets > 0) {
    
                        System.out.println(Thread.currentThread().getName() + "卖票中:第" + (len + 1 - tikets) + "张票");
    
                        tikets--;
                    }
                } finally {
                    l.unlock();
                }
    
            }
        }
    }
    package com.jack.test2;
    
    import static java.lang.Thread.sleep;
    
    public class MyRunnable implements Runnable {
        int len = 5;
        int tikets = len;
        Object obj = new Object();
    
        @Override
        public void run() {
            while (true) {
                synchronized (obj) {
                    if (tikets > 0) {
    
                        System.out.println(Thread.currentThread().getName() + "卖票中:第" + (len + 1 - tikets) + "张票");
    
                        tikets--;
                    }
                }
            }
        }
    }
    package com.jack.test2;
    
    import static java.lang.Thread.sleep;
    
    public class MyRunnable2 implements Runnable {
        static int len = 5;
        static int tikets = len;
        Object obj = new Object();
    
        @Override
        public void run() {
            while (true) {
                dosome();
            }
        }
    
        public static synchronized void dosome() {
            if (tikets > 0) {
                System.out.println(Thread.currentThread().getName() + "卖票中:第" + (len + 1 - tikets) + "张票");
                tikets--;
            }
        }
    
    }
    "D:Program Files (x86)Javajdk1.8.0_71injava.exe" "-javaagent:D:Program FilesJetBrainsIntelliJ IDEA 2018.3.3libidea_rt.jar=60091:D:Program FilesJetBrainsIntelliJ IDEA 2018.3.3in" -Dfile.encoding=UTF-8 -classpath "D:Program Files (x86)Javajdk1.8.0_71jrelibcharsets.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibdeploy.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextaccess-bridge-32.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextcldrdata.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextdnsns.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextjaccess.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextjfxrt.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextlocaledata.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibext
    ashorn.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunec.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunjce_provider.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunmscapi.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunpkcs11.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextzipfs.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjavaws.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjce.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjfr.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjfxswt.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjsse.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibmanagement-agent.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibplugin.jar;D:Program Files (x86)Javajdk1.8.0_71jrelib
    esources.jar;D:Program Files (x86)Javajdk1.8.0_71jrelib
    t.jar;D:usersligenyunIdeaProjectsTestoutproductionday1" com.jack.test2.main
    Thread-0卖票中:第1张票
    Thread-2卖票中:第2张票
    Thread-2卖票中:第3张票
    Thread-2卖票中:第4张票
    Thread-2卖票中:第5张票
  • 相关阅读:
    HihoCoder1371
    Intern Day23
    腾讯移动客户端开发暑期实习一面笔试
    C++
    朱丹为什么是文艺青年
    金数据一个不错的调查平台
    单反手动对焦M档,AV,TV,P,A,A-DEP
    chrome不支持字体12px
    火狐解决字体模糊
    《程序员的自我修养》阅读笔记(四):
  • 原文地址:https://www.cnblogs.com/ligenyun/p/12630271.html
Copyright © 2011-2022 走看看