![](https://img-blog.csdnimg.cn/20210721192723371.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java进阶
文章平均质量分 86
进阶笔记,更上一层楼
码ming
这个作者很懒,什么都没留下…
展开
-
Juc(常用工具,CAS算法)
JUC常用工具CountDownLatch: 减少计数CyclicBarrier: 循环栅栏Semaphore: 信号灯CountDownLatchJava 5.0 在java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。闭锁CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await原创 2021-11-02 21:29:39 · 336 阅读 · 0 评论 -
Java8新特性(Stream API,Optional )
简介Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API。Stream API ( java.util.stream) 把真正的函数式编程风格引入到Java中。这是目前为止对Java类库最好的补充,因为Stream API可以极大提供Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用Stream AP原创 2021-05-24 00:10:54 · 220 阅读 · 0 评论 -
AIO
伪异步I/O编程概述 在上述案例中:客户端的并发访问增加时。服务端将呈现1:1的线程开销,访问量越大,系统将发生线程栈溢出,线程创建失败,最终导致进程宕机或者僵死,从而不能对外提供服务。接下来我们采用一个伪异步I/O的通信框架,采用线程池和任务队列实现,当客户端接入时,将客户端的Socket封装成一个Task(该任务实现java.lang.Runnable线程任务接口)交给后端的线程池中进行处理。JDK的线程池维护一个消息队列和N个活跃的线程,对消息队列中Socket任务进行处理,由于线程原创 2021-05-21 01:09:26 · 114 阅读 · 0 评论 -
NIO——非阻塞式网络通信
阻塞与非阻塞传统的IO 流都是阻塞式的。也就是说,当一个线程调用read() 或write() 时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。因此,在完成网络通信进行IO 操作时,由于线程会阻塞,所以服务器端必须为每个客户端都提供一个独立的线程进行处理,当服务器端需要处理大量客户端时,性能急剧下降。Java NIO 是非阻塞模式的。当线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞IO 的空闲时间用于在其他通道上执行IO 操作,所以原创 2021-05-21 01:09:18 · 591 阅读 · 0 评论 -
NIO——三大核心(缓冲区,通道,选择器)
Java NIO 简介Java NIO(New IO)也有人称之为 java non-blocking IO是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。NIO可以理解为非阻塞IO,传统的IO的read和write只能阻塞执行,线程在读写IO期间不能干其他事情,比如调用socket.read()时,如果服务器原创 2021-05-21 01:09:23 · 791 阅读 · 0 评论 -
Juc(读写锁,集合)
Java JUC 简介在Java 5.0 提供了java.util.concurrent(简称JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步IO 和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的Collection 实现等。CAS 算法CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。CAS 是一种无锁的非原创 2021-05-19 23:19:21 · 276 阅读 · 0 评论 -
Java多线程信息共享(volatile,synchronized,Lock,各种锁)
信息共享• 粗粒度:子线程与子线程之间、和main线程之间缺乏交流• 细粒度:线程之间有信息交流通讯– 通过共享变量达到信息共享– JDK原生库暂不支持发送消息 (类似MPI并行库直接发送消息)• 通过共享变量在多个线程中共享消息– static变量– 同一个Runnable类的成员变量• 多线程信息共享问题– 工作缓存副本– 关键步骤缺乏加锁限制• i++,并非原子性操作– 读取主存i (正本)到工作缓存(副本)中– 每个CPU执行(副本)i+1操作– CPU将结果写入到缓原创 2021-01-25 03:13:24 · 656 阅读 · 0 评论 -
maven配置与介绍
配置本地的仓库位置<localRepository>D:\apache-maven-3.8.1\repository</localRepository>配置镜像mirrorof标签解释:官网:http://maven.apache.org/guides/mini/guide-mirror-settings.html注意:mirrorof标签原创 2021-04-16 22:46:17 · 320 阅读 · 0 评论 -
Java进阶
并发,网络高级,数据库池,混合编程,stream流,jvm,maven配置,字节码原创 2021-05-24 00:42:13 · 100 阅读 · 0 评论 -
数据库连接池
JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:在主程序(如servlet、beans)中建立数据库连接进行sql操作断开数据库连接这种模式开发,存在的问题:普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection加载到内存中,再验证用户名和密码(得花费0.05s~1s的时间)。需要数据库连接的时候,就向数据库要求一个,执行完成后再断开连接。这样的方式将会消耗原创 2021-02-08 23:49:43 · 223 阅读 · 0 评论 -
新增创建多线程方式(Callable、线程池、Fork/JoinPool)
实现Callable接口 与使用Runnable相比, Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助FutureTask类,比如获取返回结果Future接口 可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成、获取结果等。 FutrueTask是Futrue接口的唯一的实现类 FutureTask 同时实现了Runnable, Future接口。它既可原创 2021-01-25 14:24:18 · 401 阅读 · 8 评论