04 2022 档案
摘要:Future Future设计的初衷: 对将来的某个事件的结果进行建模 /* 异步调用:Ajax 1.异步执行 2.成功回调 3.失败回调 */ public class Demo01 { public static void main(String[] args) throws Execution
阅读全文
摘要:分支合并 什么是ForkJoin ForkJoin在jdk1.7发行,并行执行任务,提高效率,适用于大数据量! 大数据:MapReduce(把大任务拆分为小任务) ForkJoin特点:工作窃取 这个里面维护的都是双端队列 ForkJoin使用 计算类 /* 求个计算的任务! 3000 6000(F
阅读全文
摘要:// 多线程并发 public static void main(String[] args) { long start = System.currentTimeMillis(); for (int i = 0; i < 10; i++) { new Thread(() -> { // 线程体 })
阅读全文
摘要:public class Test { public static void main(String[] args) { User u1 = new User(1, "a", 21); User u2 = new User(2, "b", 22); User u3 = new User(3, "c"
阅读全文
摘要:函数型接口 源码分析 @FunctionalInterface public interface Function<T, R> { /** * Applies this function to the given argument. * * @param t the function argumen
阅读全文
摘要:三大方法 // Executors 工具类: 3大方法 // 使用了线程池之后,使用线程池来创建线程 public class Demo01 { public static void main(String[] args) { ExecutorService threadPool = Executo
阅读全文
摘要:BlockingQueue 方式 抛出异常 有返回值,不抛出异常 阻塞等待 超时等待 添加 boolean add(E e) boolean offer(E e) void put(E e) boolean offer(E e, long timeout, TimeUnit unit) 移除 E r
阅读全文
摘要:ReadWriteLock /* 独占锁(写锁) 一次只能被一个线程占有 共享锁(读锁) 多个线程可以同时占有 ReadWriteLock 读-读 可以共存 读-写 不能共存 写-写 不能共存 */ public class ReadWriteLockDemo { public static voi
阅读全文
摘要:CountDownLatch // 减法计数器 public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { // 总数是6 必须要执行任务的时候,再使用!
阅读全文
摘要:List不安全 // java.util.ConcurrentModificationException 并发修改异常! public class ListTest { public static void main(String[] args) { // 并发下ArrayList是不安全的 /**
阅读全文
摘要:第一组 /* 8锁,就是关于锁的八个问题 1.标准情况下,两个线程先打印 发短信还是打电话? 2.sendSms延迟4秒,两个线程先打印 发短信还是打电话? */ public class Test1 { public static void main(String[] args) { Phone
阅读全文
摘要:不安全代码 /** * 线程之间的通信问题: 生产者和消费者问题! 等待唤醒,通知唤醒 * 线程交替执行 A B 操作同一个变量 num=0 * A num+1 * B num-1 */ public class A { public static void main(String[] args)
阅读全文
摘要:/* A执行完调用B,B执行完调用C,C执行完调用A */ public class C { public static void main(String[] args) { Data3 data = new Data3(); new Thread(()->{ for (int i = 0; i <
阅读全文
摘要:synchronized版的生产者和消费者问题 /** * 线程之间的通信问题: 生产者和消费者问题! 等待唤醒,通知唤醒 * 线程交替执行 A B 操作同一个变量 num=0 * A num+1 * B num-1 */ public class A { public static void ma
阅读全文
摘要:三大不安全案例及解决办法 买票 不安全代码 // 不安全的买票 // 线程不安全,有负数 public class UnsafeBuyTicket { public static void main(String[] args) { BuyTicket station = new BuyTicket
阅读全文
摘要:解决方式一:管程法 // 测试:生产者消费者模型-->利用缓冲区解决:管程法 // 生产者,消费者,产品,缓冲区 public class TestPC { public static void main(String[] args) { SynContainer container = new S
阅读全文
摘要:创建线程 三种方式创建线程 继承Thread 实现Runnable 实现Callable接口 有缓存 结果可能需要等待,会阻塞! public class ThreadNew { public static void main(String[] args) { // 1.继承Thread类 new
阅读全文
摘要:pom.xml <dependencies> <!--mybatis-spring-boot-starter: 整合--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-
阅读全文
摘要:pom.xml <!--druid--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.21</version> </dependency> <!--log4j--> <
阅读全文
摘要:pom.xml <!--jdbc--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!--mysql
阅读全文
摘要:目录结构 实现 LoginController @Controller public class LoginController { @RequestMapping("/user/login") public String login(@RequestParam("username") String
阅读全文
摘要:目录结构 实现步骤 配置i18n文件 login.properties login.btn=登录 login.password=密码 login.remember=记住我 login.tip=请登录 login.username=用户名 application.properties # 我们的配置文
阅读全文
摘要:SpringBoot官网摘取 原文 If you want to keep those Spring Boot MVC customizations and make more MVC customizations (interceptors, formatters, view controller
阅读全文
摘要:源码分析 WebMvcAutoConfiguration EnableWebMvcConfiguration welcomePageHandlerMapping() @Bean public WelcomePageHandlerMapping welcomePageHandlerMapping(Ap
阅读全文
摘要:源码分析 WebMvcAutoConfiguration WebMvcAutoConfigurationAdapter WebMvcProperties mvcProperties @Override public void addResourceHandlers(ResourceHandlerRe
阅读全文
摘要:
阅读全文