{"id":4122,"date":"2023-02-07T16:19:18","date_gmt":"2023-02-07T08:19:18","guid":{"rendered":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=4122"},"modified":"2023-02-07T16:19:18","modified_gmt":"2023-02-07T08:19:18","slug":"%e5%8d%95%e6%9c%ba%e9%99%90%e6%b5%81%e7%9a%84%e5%87%a0%e7%a7%8d%e6%96%b9%e5%bc%8f","status":"publish","type":"post","link":"https:\/\/www.zeroheart.xyz\/wordpress\/?p=4122","title":{"rendered":"\u5355\u673a\u9650\u6d41\u7684\u51e0\u79cd\u65b9\u5f0f"},"content":{"rendered":"\n<p><a href=\"https:\/\/blog.csdn.net\/wangjianhua_love\/article\/details\/81530366\">(34\u6761\u6d88\u606f) \u5355\u673a\u9650\u6d41\u7684\u51e0\u79cd\u65b9\u5f0f_\u9633\u5149\u751a\u597d\u7684\u535a\u5ba2-CSDN\u535a\u5ba2<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/blog.csdn.net\/huochefei\/article\/details\/125504742?spm=1001.2101.3001.6661.1&amp;utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-125504742-blog-81530366.pc_relevant_multi_platform_whitelistv3&amp;depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-125504742-blog-81530366.pc_relevant_multi_platform_whitelistv3&amp;utm_relevant_index=1\">(34\u6761\u6d88\u606f) \u5355\u673a\/\u5206\u5e03\u5f0f\u9650\u6d41-\u6f0f\u6876\/\u4ee4\u724c\u6876\/\u6ed1\u52a8\u7a97\u53e3\/redis\/nginx\/sentinel_\u5355\u673a\u7248\u9650\u6d41_\u8ba9\u706b\u8f66\u5728\u5929\u4e0a\u98de\u7684\u535a\u5ba2-CSDN\u535a\u5ba2<\/a> <\/p>\n\n\n\n<p>\/**<\/p>\n\n\n\n<ul>\n<li>\u539f\u5b50\u8ba1\u6570\u9650\u6d41\u65b9\u5f0f<\/li>\n\n\n\n<li>\u7b80\u5355\u7c97\u66b4\u7684\u9650\u6d41\u65b9\u5f0f\uff0c\u6ca1\u6709\u5e73\u6ed1\u5904\u7406\uff0c\u9700\u8981\u6839\u636e\u573a\u666f\u4f7f\u7528<br>*\/<br>public class AtomicLimit {<br>private AtomicInteger requestCount=new AtomicInteger(0); public void doRequest(String threadName){<br>try {<br>if (requestCount.incrementAndGet() &gt; 10) {<br>System.out.println(threadName + &#8220;\u8bf7\u6c42\u8fc7\u591a\u8bf7\u7a0d\u540e\u91cd\u8bd5&#8221;);<br>} else {<br>System.out.println(threadName + &#8220;\u60a8\u7684\u8bf7\u6c42\u5df2\u7ecf\u5904\u7406&#8221;);<br>try {<br>Thread.sleep(1000);<br>} catch (InterruptedException e) {<br>e.printStackTrace();<br>}<br>\/\/mark \u6b63\u5e38\u4e1a\u52a1\u903b\u8f91\u5904\u7406\u7ed3\u675f<br>}<br>}finally {<br>requestCount.decrementAndGet();<br>}<br>}<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>\/**<\/p>\n\n\n\n<ul>\n<li>\u5229\u7528\u4fe1\u53f7\u91cf\u65b9\u5f0f\u9650\u6d41<br>*\/<br>public class ExcutorSignal {<br>public static void main(String[] args) {<br>ExecutorService exec = Executors.newFixedThreadPool(20);<br>\/\/\u53ea\u80fd5\u4e2a\u7ebf\u7a0b\u540c\u65f6\u8bbf\u95ee<br>final Semaphore semp = new Semaphore(5);<br>for (int i = 0; i &lt; 20; i++) {<br>final int taskNo = i;<br>Runnable run = new Runnable() {<br>@Override<br>public void run() {<br>try {<br>semp.acquire();\/\/\u83b7\u53d6\u8bb8\u53ef<br>String name = Thread.currentThread().getName();<br>System.out.println(&#8220;\u5f00\u59cb&#8221; + name + &#8220;_&#8221; + taskNo);<br>Thread.sleep((long) (Math.random() * 10000));<br>semp.release();\/\/\u8bbf\u95ee\u5b8c\u540e\u91ca\u653e<br>} catch (InterruptedException e) {<br>e.printStackTrace();<br>}<br>}<br>};<br>exec.execute(run);<br>}<br>}<br>}<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>\/**<\/p>\n\n\n\n<ul>\n<li>\u4ee4\u724c\u6876\uff0c\u4e3b\u8981\u9650\u5236\u6d41\u5165<\/li>\n\n\n\n<li>\u9650\u6d41\uff0c\u591a\u7684\u8bf7\u6c42\u76f4\u63a5\u62d2\u7edd<\/li>\n\n\n\n<li>\u53ef\u4ee5\u9488\u5bf9\u65b9\u6cd5\u7ea7\u522b\u914d\u7f6e<br>*\/<br>public class TrafficShapper {<br>private RateLimiter rateLimiter = RateLimiter.create(10);<br>public void doRequest(String threadName) {<br>boolean isAcquired = rateLimiter.tryAcquire(1, 3000L, TimeUnit.MICROSECONDS);\/\/rateLimiter.tryAcquire();<br>if (isAcquired) {<br>System.out.println(threadName + &#8220;:\u8c03\u7528\u6210\u529f&#8221;);<br>} else {<br>System.out.println(threadName + &#8220;:\u5f53\u524d\u8c03\u7528\u4eba\u6570\u8fc7\u591a\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5&#8221;);<br>}<br>} public static void main(String[] args) {<br>final TrafficShapper shapper = new TrafficShapper();<br>final CountDownLatch latch = new CountDownLatch(1);<br>final Random random = new Random(10);<br>for (int i = 0; i &lt; 20; i++) {<br>final int finalT = i;<br>Thread t = new Thread(new Runnable() {<br>@Override<br>public void run() {<br>try {<br>latch.await();<br>int sleepTime = random.nextInt(1000);<br>Thread.sleep(sleepTime);<br>shapper.doRequest(&#8220;t-&#8221; + finalT);<br>} catch (InterruptedException e) {<br>e.printStackTrace();<br>}<br>}<br>});<br>t.start();<br>}<br>latch.countDown();<br>}<\/li>\n<\/ul>\n\n\n\n<p>}<\/p>\n\n\n\n<p>CountDownLatch latch=new CountDownLatch(1);\/\/mark \u4fdd\u8bc1\u7ebf\u7a0b\u540c\u4e00\u65f6\u523b\u542f\u52a8<br>latch.await();<br>latch.countDown();\/\/\u5f53\u524d\u8ba1\u6570\u4e3a0\u5219\u4e0d\u6267\u884c\u64cd\u4f5c\uff0c\u5f53\u8ba1\u6570\u4ece>0\u53d8\u62100\u540e\uff0c\u6240\u6709\u7ebf\u7a0b\u540c\u65f6\u542f\u52a8<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>(34\u6761\u6d88\u606f) \u5355\u673a\u9650\u6d41\u7684\u51e0\u79cd\u65b9\u5f0f_\u9633\u5149\u751a\u597d\u7684\u535a\u5ba2-CSDN\u535a\u5ba2 (34\u6761\u6d88\u606f) \u5355\u673a\/\u5206\u5e03\u5f0f\u9650\u6d41-\u6f0f\u6876\/\u4ee4\u724c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[267],"_links":{"self":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4122"}],"collection":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4122"}],"version-history":[{"count":2,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4122\/revisions"}],"predecessor-version":[{"id":4124,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/4122\/revisions\/4124"}],"wp:attachment":[{"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zeroheart.xyz\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}