Java
Java复习
ElasticForce
永远怀揣着一颗学徒的心
展开
-
Vscode中不再支持JDK8的解决方案
昨天还用得好好的,今天突然给我说支持JDK11以上了,也不能进行正常的代码补全了。看了一下,是Language Support for Java™ by Red Hat这个拓展更新到0.65.0的原因。因为Eclipse平台决定将JDK11作为9月发布的最低要求,而vscode是依赖eclipsejdt.ls服务器的,所以需要更新到JDK11。解决方案1如果不是必须使用JDK8,可以选择更换为JDK11或更新解决方案2官方说可以在settings.json中配置java.configurat原创 2020-07-25 11:32:56 · 31414 阅读 · 11 评论 -
vscode使用wsl2的Java环境
WSL2的Java环境因为开发环境都部署在WSL2中,JDK也是安装在WSL2里的,Win10并没有配置JDK。这样有时想写写算法题就很麻烦了,需要进入WSL2的图形界面,启动IDEA才能开始写。所以这里在Windows下使用Vscode来调用WSL2内部的Java环境。(同理可以使用WSL2内的C++、Python环境等)Vscode安装拓展安装Remote-WSL拓展然后F1,启动Remote-WSL:New Window在Remote-WSL模式下安装Java Extension P原创 2020-07-10 15:42:28 · 3125 阅读 · 1 评论 -
体系化深入学习并发编程(十)Future和Callable
Future和CallableCallable接口Future接口线程池submit()获取future对象使用集合存储多个Future对象call方法发生异常时get()、cancel()超时的情况FutureTaskCallable接口Callable接口是对Runnable接口的一种补充为什么这么说呢,因为我们之前调用Runnable接口时就发现,其中的run()方法是没有返回值的,同时也不能抛出异常。public abstract void run();因为所以我们都是在run()方法内原创 2020-06-06 21:51:09 · 184 阅读 · 0 评论 -
体系化深入学习并发编程(九)并发控制与AQS
并发控制与AQS原理控制并发流程的工具类CountDownLatchSemaphoreConditionCyclicBarrier我们经常需要处理线程间的协作问题,比如哪些线程先执行,哪些线程后执行,或者哪些线程需要一起执行。之前的文章中,用到了CountDownLatch等类来控制并发流程,现在就来详细地了解一下有关控制并发流程的类。控制并发流程的工具类CountDownLatchCountDownLatch,翻译过来就是倒计时的闩锁。等待计数达到要求后才执行下一操作。生活中处处都能见到类似的原创 2020-06-05 00:15:17 · 166 阅读 · 0 评论 -
体系化深入学习并发编程(八)并发容器
并发容器早期的并发容器Vector和HashtableCollections类中的同步方法早期的并发容器Vector和HashtableVector和Hashtable都是JDK1.0就有了的并发容器,其作用和ArrayList和HashMap的用法相差无几。不过前二者是线程安全的,而后两者是线程不安全的。不过这两个线程安全的容器,现在也被后来者取代了。这是由于,这两个容器为了保证并发安全,在可能出现并发冲突的方法上,直接采用synchronized关键字来保障线程安全。比如在Vector中:原创 2020-06-01 20:44:21 · 216 阅读 · 0 评论 -
体系化深入学习并发编程(七)final关键字与不可变性
final关键字final关键字的知识点属于Java语言的基础,这里再次回顾final关键字的三种用法:final修饰的类不可被继承final修饰的方法不可被重写final修饰的变量不可被更改final修饰变量被final修饰的变量的值不可更改。但是有一点需要注意的是变量为引用类型时,变量的值存放的是引用类型的地址,这个地址不能发生改变,但是引用类型的内容是可以变化的。public static void main(String[] args) { final List<Inte原创 2020-05-31 14:45:36 · 166 阅读 · 0 评论 -
体系化深入学习并发编程(六)原子类和CAS
原子类和CAS原子类原子基本类型原子数组类型原子引用类型原子类原子类是指JUC库里的atomic包下的类。这些原子类都具有原子性(在JMM文章中有详细叙述)提到原子,就会想到化学,在高中化学所学的相关的一些化学方程式中,原子是不可再分的(这里并不去探究中子、质子、夸克什么)而我们所谓的原子性就是这个性质:不可再分原子性可以保障线程安全,因为是不可再分,所以在同一时间,只能有一个线程能够正确操作,达到了线程安全的效果相对于锁而言,原子类的粒度更细,锁保证的原子性的粒度通常一个临界区,有多个代码,原创 2020-05-30 14:47:35 · 159 阅读 · 0 评论 -
体系化深入学习并发编程(五)若有“锁”思
聊聊并发中的锁一级目录二级目录一级目录二级目录原创 2020-05-27 18:20:19 · 273 阅读 · 0 评论 -
体系化深入学习并发编程(四)揭开ThreadLocal的面纱
ThreadLocalThreadLocal的用途每个线程需要独享的对象如果多个线程共享一个非线程安全对象,我们通常考虑使用锁来达到线程安全。实际上,也可以选择不共享这个对象,而是每个线程来创建一个该对象的实例,每个线程只能访问自己创建的实例。这种被一个线程独有的对象就被称为线程特有对象,相应的持有该对象的线程就称为持有线程ThreadLocal类相当于线程访问其线程特有对象的代理,各个线程通过这个对象可以创建并访问各自的线程特有对象。ThreadLocal类可以理解为当前线程访问其线程特有对象的代原创 2020-05-23 22:11:29 · 246 阅读 · 0 评论 -
体系化深入学习并发编程(三)更好地了解Java线程池
并发死锁问题一级目录二级目录三级目录一级目录二级目录三级目录原创 2020-05-22 18:17:09 · 241 阅读 · 0 评论 -
体系化深入学习并发编程(二)刨根问底Java内存模型
Java内存模型一级目录二级目录三级目录一级目录二级目录三级目录原创 2020-05-20 21:37:05 · 225 阅读 · 0 评论 -
体系化深入学习并发编程(一)由简入繁系统梳理并发知识点
线程八大核心基础实现线程的方式继承Thread类实现Runnable接口两种方式的比较线程的正确启动如何停止线程线程的声明周期Thread类和Object类中关于线程的方法线程的重要属性线程的未捕获异常多线程的利与弊实现线程的方式Java实现多线程到底有几种方式呢?在看面试题的时候,多数都说是两种,但是在网上总会看到不同的声音,所以查阅了Java的官方文档There are two ways to create a new thread of execution.One is to declare原创 2020-05-17 15:40:19 · 416 阅读 · 0 评论 -
HashMap深入剖析笔记
HashMaP散列表jdk1.7的底层数据结构jdk1.8的底层数据结构HashMap中的一些位运算hash值的计算数组容量数组下标的计算散列表HashMap的核心是散列表,散列表是一个基于数组实现实现的数据结构,使用的是数组支持随机下标访问的特性,通过将一个key通过hash函数转化为数组下标。但是不同的key算出来的hash值可能相同,这就导致了hash冲突(也叫hash碰撞)对于ha...原创 2020-04-24 16:11:33 · 115 阅读 · 0 评论 -
Java复习——核心机制之反射
反射能够分析类能力的程序称之为反射反射机制可以用来:在运行时分析类的能力在运行时查看对象实现通用的数组操作代码利用Method对象Class类在程序运行期间,Java 运行时系统始终为所有的对象维护一个被称为运行时的类型标识 。这个信息跟踪着每个对象所属的类。虚拟机利用运行时类型信息选择相应的方法执行 。然而,可以通过专门的 Java 类访问这些信息。保存这些信息的类被称为C...原创 2020-04-10 15:04:27 · 153 阅读 · 0 评论