随笔分类 -  Java基础

摘要:一、Java NIO 简介 原文链接 https://xie.infoq.cn/article/fb524c4992beea6bb4487af87 1、简介 Java NIO(New IO)是从 Java 1.4 版本开始引入的一个新的 IO API,可以替代标准的 Java IO API。NIO 阅读全文
posted @ 2021-12-13 16:00 Oh,mydream! 阅读(141) 评论(0) 推荐(0)
摘要:异步回调 Future 设计的初衷:对未来的结果建模 package com.example.juc; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; imp 阅读全文
posted @ 2021-12-10 10:52 Oh,mydream! 阅读(39) 评论(0) 推荐(0)
摘要:ForkJoin详解 ForkJoin fork分支 jion合并 主要思想:把大任务拆分成小任务,最后把小任务的结果合并 工作窃取:ForkJoin维护的都是双端队列,先执行完的线程会去获取未执行完线程的最后的任务来执行,可以提高效率,但是也可能会引入问题 Long 和long性能相差好大,但是L 阅读全文
posted @ 2021-12-09 21:41 Oh,mydream! 阅读(100) 评论(0) 推荐(0)
摘要:Stream 流式计算 大数据:存储+计算 集合、MYSQL本质就是存储东西的 计算都应该交给流来操作 package com.example.juc; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArg 阅读全文
posted @ 2021-12-07 20:55 Oh,mydream! 阅读(33) 评论(0) 推荐(0)
摘要:四大函数式接口 新时代程序员必会:lambda表达式,链式编程,函数式接口, Stream流式计算 函数式接口:只有一个函数的接口. Example: Runnable, Callable都是常用的函数式接口 这四大函数式接口可以在javase文档中查看,java.util.function包下 F 阅读全文
posted @ 2021-12-07 11:31 Oh,mydream! 阅读(123) 评论(0) 推荐(0)
摘要:CPU密集型和IO密集型 CPU密集型,最大化利用CPU资源,将最大线程池数设置为cpu核数 cpu核数:Runtime.getRuntime().availableProcessors() IO密集型:有比较多的IO操作,非常耗费线程 将最大线程数设置为IO线程总数的两倍,或者大于IO线程总数即可 阅读全文
posted @ 2021-12-06 17:12 Oh,mydream! 阅读(124) 评论(0) 推荐(0)
摘要:池化技术与线程池 池化技术 简介 程序的运行,本质:占用系统的资源!优化资源的使用!=>池化技术 池化技术的应用:线程池、连接池、内存池、对象池... 一句话解释池化技术:事先准备好一些资源,有人要用就来我这里拿,用完之后还给我,下个人再过来用。 线程池的优点: 1.降低资源的消耗 2.提高响应速度 阅读全文
posted @ 2021-12-06 11:11 Oh,mydream! 阅读(93) 评论(0) 推荐(0)
摘要:同步队列 SynchronousQueue 同步队列即队列容量为1的队列,只能放进一个元素,取出后才能放入另一个 package com.example.juc; import java.util.concurrent.BlockingQueue; import java.util.concurre 阅读全文
posted @ 2021-12-04 17:00 Oh,mydream! 阅读(89) 评论(0) 推荐(0)
摘要:BlockingQueue 4组API 会抛异常 不抛异常,有返回值 阻塞 超时阻塞 添加 add offer put offer(,,) 删除 remove poll take poll(,) 查询 .element() .peek() -- -- 代码: package com.example. 阅读全文
posted @ 2021-12-02 20:47 Oh,mydream! 阅读(35) 评论(0) 推荐(0)
摘要:阻塞队列 队列: 队列就是一个管道 先进来的元素先出(FIFO) 队列涉及两个操作,一个写入,一个读取 阻塞情况: 当队列已经满了,继续写入,形成写入阻塞 当队列已经空了,继续读取,形成读取阻塞 java类: 队列类:Queue 双端队列:Deque 阻塞队列:BlockingQueue 非阻塞队列 阅读全文
posted @ 2021-12-02 17:44 Oh,mydream! 阅读(57) 评论(0) 推荐(0)
摘要:读写锁 ReentrantReadWriteLock 可重复读写锁: 可以更加细粒度控制读和写的锁情况。 读锁可以多线程一起读,写只能一个一个按顺序写,可以进一步提高代码效率 独占锁即写锁 共享锁即读锁 下面代码可以把注释解开运行下看下效果 package com.example.juc; impo 阅读全文
posted @ 2021-12-01 15:16 Oh,mydream! 阅读(30) 评论(0) 推荐(0)
摘要:并发编程必须掌握的三个辅助类 CountDownLatch 倒计时计数器 countDownLatch.countDown() countDownLatch.await() package com.example.juc; import java.util.concurrent.CountDownL 阅读全文
posted @ 2021-11-30 20:16 Oh,mydream! 阅读(32) 评论(0) 推荐(0)
摘要:Callable接口实现 之前学过callable, 这次再学些不一样的东西 Callable vs. Runnable Callable 接口有返回值, Runnable 接口没有返回值 Callable 接口可以抛出异常, Runnable 接口不能抛出异常 一个重写call方法,一个重写run 阅读全文
posted @ 2021-11-30 11:26 Oh,mydream! 阅读(46) 评论(0) 推荐(0)
摘要:CopyOnWriteArraySet HashSet是多线程不安全的,建议使用CopyOnWriteArraySet package com.example.juc; import java.util.Set; import java.util.UUID; import java.util.con 阅读全文
posted @ 2021-11-30 10:20 Oh,mydream! 阅读(57) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList ArrayList是多线程不安全的,建议使用CopyOnWriteArrayList package com.example.juc; import java.util.List; import java.util.UUID; import java.uti 阅读全文
posted @ 2021-11-30 09:41 Oh,mydream! 阅读(28) 评论(0) 推荐(0)
摘要:彻底理解8锁 重点:锁 锁的是对象或者class模板, 静态方法锁的是class模板 1.初始情况 同一个对象,两个方法加锁,先“打电话”还是发短信? package com.example.juc; import java.util.concurrent.TimeUnit; public clas 阅读全文
posted @ 2021-11-29 15:40 Oh,mydream! 阅读(99) 评论(0) 推荐(0)