![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 基础
okclouderx
这个作者很懒,什么都没留下…
展开
-
Java 设计模式基本原则
Java 设计模式基本原则Java 设计模式有 6 个基本的原则:单一职责。一个类最好只负责一个功能的职责,避免多个功能混杂。里氏替换。所有使用基类的地方都应该可以被它的子类替换。依赖反转。抽象不应该依赖于细节,细节应该依赖于抽象。接口隔离。接口的定义应该拆分最小化。迪米特法则。一个类应该尽可能少地了解其他的类,与其他类的耦合降到最低。开闭原则。一个类的功能应该对外扩展开放,对内修...原创 2019-10-16 23:17:40 · 186 阅读 · 0 评论 -
Java 线程池
Java 线程池线程的创建和消耗都需要一定的开销,如果每次执行一个异步任务都需要开一个线程去执行,则这些线程的创建和销毁将消耗大量的资源,而且线程都是各自为政,很难对其进行控制,更何况有一堆的线程在执行。这时就需要线程池对线程进行管理。在 Java 1.5 中提供了 Executor 框架用于把任务的提交和执行解耦,任务的提交交给 Runnable 或者 Callable,而 Executor...原创 2019-10-06 22:49:27 · 92 阅读 · 0 评论 -
Java 阻塞队列
Java 阻塞队列阻塞队列在 Java 中时常被用到,比如线程池、生产者消费者模型。阻塞队列简介阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。常见阻塞场景阻塞队列有两个常见的阻塞场景,它们分别是:当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有...原创 2019-10-05 19:14:01 · 150 阅读 · 0 评论 -
镜像配置
镜像配置由于一些网络原因,下载软件和依赖的速度很慢。切换使用淘宝镜像下载。阿里云 Maven 镜像gradlerepositories { maven {url 'http://maven.aliyun.com/nexus/content/groups/public/'} mavenCentral()}maven<repositories> &l...原创 2019-08-18 22:15:58 · 117 阅读 · 0 评论 -
Java 注解与注解处理器
Java 注解与注解处理器从 JDK 5 开始,Java 增加了注解,注解是代码里面的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行一些相应的处理。通过使用注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证、处理或者进行部署。注解注解可以分为标准注解和元注解。标准注解是 JDK 自带的注解。元注...原创 2019-09-08 23:23:55 · 5020 阅读 · 0 评论 -
Java volatile 关键字
Java volatile 关键字volatile 是 Java 的关键字,它的本意是易变的,即被 volatile 声明的变量可能被其他线程修改,需要用 volatile 保证变量的可见性和有序性。有时仅仅为了读写一个或者两个实例域就使用同步的话,显得开销过大;而 volatile 关键字为实例域的同步访问提供了免锁机制。如果声明一个域为 volatile,那么编译器和虚拟机就知道该域是可能...原创 2019-10-04 19:31:29 · 165 阅读 · 0 评论 -
Java 强软弱虚引用
Java 强软弱虚引用Java 根据对象的引用方式可以分为:强引用、软引用、弱引用、虚引用。即 SoftReference、WeakReference、PhantomReference。SoftReference、WeakReference、PhantomReference 位于 java.lang.ref 包,它们通常和 ReferenceQueue 一起使用。强引用强引用即对象的直接...原创 2019-10-04 12:23:59 · 210 阅读 · 0 评论 -
Java 同步方法和同步代码块
Java 同步方法和同步代码块Lock 和 Condition 接口提供了高度定制的锁定控制,但是大多数情况下,并不需要那样的控制,并且可以使用一种嵌入到 Java 语言内部的机制。从 Java 1.0 开始,Java 中的每个对象都有一个内部锁。如果一个方法用 synchronized 关键字声明,那么对象的锁将保护整个方法。也就是说,要调用该方法,线程必须获得内部的对象锁。同步方法使用...原创 2019-10-03 16:15:53 · 476 阅读 · 0 评论 -
Java 重入锁与条件对象
Java 重入锁与条件对象重入锁 ReentrantLock 是 Java 1.5 引入的,重入的意思是指可以重复获取锁,即拿到锁的对象可以再次拿一次锁,而不必先释放上一个锁。ReentrantLock 实现了 Lock 接口。用 ReentrantLock 保护代码块的结构如下: private void dosomethingLock() { Lock lock =...原创 2019-10-02 18:38:05 · 361 阅读 · 0 评论 -
Java 线程的中断与停止
Java 线程的中断与停止当线程的 run 方法执行完毕,或者在方法中出现了没有捕获的异常时,线程将终止。被弃用的 stop 方法Thread 有一个 stop 方法,但是 stop 方法被废弃了。Thread 里面的 suspend\resume 也被废弃了。JDK 是这么解释的: /** ... * @deprecated This method is inh...原创 2019-10-01 15:27:00 · 297 阅读 · 0 评论 -
Java 线程 Runnable 与 Callable
Java 线程 Runnable 与 Callable如果想在新线程运行代码,可以使用 Thread 传递 Runnable 参数或者使用 Executor 调用 Callable 对象的方法。两者的区别主要在于 Callable 会返回一个 Future 对象,用来表示执行结果。Thread 和 Runnable运行 Thread 通常有 2 种方法:继承 Thread 类,复写它的 ...原创 2019-09-27 23:54:12 · 160 阅读 · 0 评论 -
Java 线程的状态
Java 线程的状态Java 线程在运行的生命周期中可能处于 6 种不同的状态:New 新创建的状态。线程被创建,但是没有调用 start 方法,在运行之前有一些基础工作要做,比如初始化操作。Runnable 可运行状态。一旦调用了 start 方法,线程就处于 Runnable 状态。一个可运行的线程可能正在运行也可能没有运行,取决于操作系统给线程提供运行的时间。Blocked 阻塞状...原创 2019-09-27 00:28:20 · 124 阅读 · 0 评论