{"id":1052,"date":"2022-10-22T14:05:52","date_gmt":"2022-10-22T06:05:52","guid":{"rendered":"https:\/\/qaqaq.top\/?p=1052"},"modified":"2022-11-27T12:39:50","modified_gmt":"2022-11-27T04:39:50","slug":"%e5%a4%9a%e7%ba%bf%e7%a8%8b-lock%e9%94%81%e6%96%b9%e5%bc%8f%e8%a7%a3%e5%86%b3%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e9%97%ae%e9%a2%98","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=1052","title":{"rendered":"\u591a\u7ebf\u7a0b-Lock\u9501\u65b9\u5f0f\u89e3\u51b3\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>package top.qaqaq.java.P439;\r\n\r\nimport java.util.concurrent.locks.ReentrantLock;\r\n\r\n\/**\r\n * \u89e3\u51b3\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\u7684\u65b9\u5f0f\u4e09\uff1aLock\u9501 --- JDK5.0\u65b0\u589e\r\n *\r\n * 1. \u9762\u8bd5\u9898\uff1asynchronized \u4e0e Lock \u7684\u5f02\u540c\uff1f\r\n *      \u76f8\u540c\uff1a\u4e8c\u8005\u90fd\u53ef\u4ee5\u89e3\u51b3\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\r\n *      \u4e0d\u540c\uff1asynchronized\u673a\u5236\u5728\u6267\u884c\u5b8c\u76f8\u5e94\u7684\u540c\u6b65\u4ee3\u7801\u4ee5\u540e\uff0c\u81ea\u52a8\u5730\u91ca\u653e\u540c\u6b65\u76d1\u89c6\u5668\r\n *            Lock\u9700\u8981\u624b\u52a8\u7684\u542f\u52a8\u540c\u6b65\uff08 Lock() \uff09\uff0c\u540c\u65f6\u7ed3\u675f\u540c\u6b65\u4e5f\u9700\u8981\u624b\u52a8\u7684\u5b9e\u73b0\uff08 unLock() \uff09\r\n *\r\n * 2.\u4f18\u5148\u4f7f\u7528\u987a\u5e8f\uff1a\r\n * Lock \u2192 \u540c\u6b65\u4ee3\u7801\u5757\uff08\u5df2\u7ecf\u8fdb\u5165\u4e86\u65b9\u6cd5\u4f53\uff0c\u5206\u914d\u4e86\u76f8\u5e94\u8d44\u6e90\uff09 \u2192 \u540c\u6b65\u65b9\u6cd5\uff08\u5728\u65b9\u6cd5\u4f53\u4e4b\u5916\uff09\r\n *\r\n * \u9762\u8bd5\u9898\uff1a\u5982\u4f55\u89e3\u51b3\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898\uff1f\u6709\u51e0\u79cd\u65b9\u5f0f\r\n *\r\n * @author RichieZhang\r\n * @create 2022-10-21 \u4e0b\u5348 7:11\r\n *\/\r\nclass Window implements Runnable{\r\n\r\n    private int ticket = 100;\r\n    \/\/1.\u5b9e\u4f8b\u5316ReentrantLock\r\n    private ReentrantLock lock = new ReentrantLock();\r\n\r\n    @Override\r\n    public void run() {\r\n        while (true){\r\n            try {\r\n\r\n                \/\/2.\u8c03\u7528\u9501\u5b9a\u65b9\u6cd5\uff1aLock()\r\n                lock.lock();\r\n\r\n                if(ticket > 0){\r\n\r\n                    try {\r\n                        Thread.sleep(100);\r\n                    } catch (InterruptedException e) {\r\n                        e.printStackTrace();\r\n                    }\r\n\r\n                    System.out.println(Thread.currentThread().getName() + \"\uff1a\u552e\u7968\uff0c\u7968\u53f7\u4e3a\" + ticket);\r\n                    ticket--;\r\n                }else {\r\n                    break;\r\n                }\r\n            }finally {\r\n                \/\/3.\u8c03\u7528\u89e3\u9501\u65b9\u6cd5\uff1aunLock()\r\n                lock.unlock();\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\npublic class LockTest {\r\n    public static void main(String&#91;] args) {\r\n        Window w = new Window();\r\n\r\n        Thread t1 = new Thread(w);\r\n        Thread t2 = new Thread(w);\r\n        Thread t3 = new Thread(w);\r\n\r\n        t1.setName(\"\u7a97\u53e31\");\r\n        t2.setName(\"\u7a97\u53e32\");\r\n        t3.setName(\"\u7a97\u53e33\");\r\n\r\n        t1.start();\r\n        t2.start();\r\n        t3.start();\r\n    }\r\n}\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[46],"class_list":["post-1052","post","type-post","status-publish","format-standard","hentry","category-java-code","tag-java"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1052"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1052"}],"version-history":[{"count":1,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1052\/revisions"}],"predecessor-version":[{"id":1053,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/1052\/revisions\/1053"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}