多线程
奋斗的小鸟专注于Java
好好学习 天天向上
展开
-
读写锁--
读写锁---在这里插入代码片=== package com.bird.共享锁和排它锁; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * @data 2021/12/18 14:19 * @author: bird * @desc...原创 2021-12-18 15:30:02 · 106 阅读 · 0 评论 -
非公平锁--
非公平锁/** * @data 2021/12/16 22:16 * @author: bird * @description: 公平锁 * 目标:如果定义一把锁给这把锁设置为公平锁那么线程就会依此的执行。 * 结论:ReentrantLock的默认是非公平锁 */public class FairLock { public static void main(String[] args) { ...原创 2021-12-18 12:37:40 · 279 阅读 · 0 评论 -
防止发送短息多次发送
场景:防止手机号发送短息多次发送代码: /** * @data 2021/12/18 12:07 * @author: bird * @description: 场景:1s之内有100次请求过来 只能允许一个手机号放行 * 结果: 最多允许一个线程执行。如果是3个服务器会存发送三处 */public class Main { //定义一把公平锁 public static ReentrantLock lock = new ReentrantLock(true);原创 2021-12-18 12:35:32 · 711 阅读 · 0 评论 -
公平锁--
/* 结论:公平锁在创建锁new ReentrantLock(true);的时候 如果将这把锁设置为公平锁的话,那么多个线程在争抢这把锁的时候会依此到一个队列中依此排队然后依次拿到这把锁 然后再执行逻辑。由于在创建new ReentrantLock(true);这把锁的时候给这把锁设置为公平锁。所以线程与线程之间是按顺序执行获取锁的。执行流程:Thread-0 至Thread-9 是依此启动的 他们都去执行printJob()这个方法,又是因为这个方法加了公平锁所以线程需要先获取这把锁然后才能执原创 2021-12-16 22:58:51 · 269 阅读 · 0 评论