![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
惠菁
我见过大海,看过繁星,但唯独遇见你,是我长久以来,所有奔赴的意义。
展开
-
【redis】三种实现分布式锁的方式
一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程进行处理,并且可以完美的运行,毫无Bug!但是这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几台机器上然后做负载均衡,大致如下图:上图可以看到,变量A存在JVM1、JVM2、JVM3三个JVM内存中,如果不加任何控制的话,变量A原创 2022-01-17 17:22:40 · 4045 阅读 · 0 评论 -
Spring Boot 创建及使用多线程@Async
Spring Boot多线程1. 介绍Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor来创建一个基于线程池的TaskExecutor(使用其他的线程池会报No task executor bean found for async processing: no bean of type TaskExecut错误)。在使用线程池的大多数情况下都是异步非阻塞的。我们配置注解@EnableAsync可以开启异步任务。然后在实际执行的原创 2022-01-14 13:38:42 · 2332 阅读 · 0 评论 -
【Java】快速了解ConcurrentSkipListMap常用方法
代码:ConcurrentSkipListMap<String,Integer> cslMap = new ConcurrentSkipListMap<String,Integer>(); cslMap.put("2017-05-22 16:18:10_key1", 1); cslMap.put("2017-05-22 16:18:08_key2", 2); cslMap.put("2017-05-22 16:18:20_key3",原创 2021-12-27 18:56:30 · 1090 阅读 · 0 评论 -
【Java】1115. 交替打印FooBar---使用Semaphore信号量,快速解决问题!!!
我们提供一个类:class FooBar {public void foo() {for (int i = 0; i < n; i++) {print(“foo”);}}public void bar() {for (int i = 0; i < n; i++) {print(“bar”);}}}两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。请设计修改程序,以确保 “foobar” 被输出原创 2021-08-14 20:06:30 · 109 阅读 · 0 评论 -
【Java】1114. 按序打印---使用信号量Semaphore类,快速解决问题!!!
我们提供了一个类:public class Foo {public void first() { print(“first”); }public void second() { print(“second”); }public void third() { print(“third”); }}三个不同的线程 A、B、C 将会共用一个 Foo 实例。一个将会调用 first() 方法一个将会调用 second() 方法还有一个将会调用 third() 方法请设计修改程序,以确保 secon原创 2021-08-13 14:02:48 · 138 阅读 · 0 评论