Java

Java|使用Java注解

刘启春

这个注解完成了一个 Servlet 代理多个请求。

ServletMapping 注解

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface ServletMapping {
    String value() default "";
}

深入理解Java多线程(三):JUC基础篇

刘启春

这篇文章主要侧重讲 JUC 的多数类的使用,文章里贴了很多练习的代码,可以通过代码更加深刻的了解这些类的功能。

这篇文章主要总结了 volatile、原子类、ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、Semphore、Exchanger 的使用,然后进行了一些对比。

深入理解Java多线程(二):多线程问题学习总结

刘启春

学了一段时间多线程方面的知识了总感觉掌握的知识有些散乱,在网上搜了一些面试问题总结梳理一下。

多线程

java 中有几种方法可以实现一个线程?

Java 中有四种方式实现一个线程。

  1. 通过实现一个 Runnable
  2. 继承 Thread 并重写 run 方法
  3. 继承 Callable,用 Future 接收可以实现异步调用
  4. 使用线程池(executer)提交作业

如何停止一个正在运行的线程?

使用 suspend 可以挂起一个线程,使用 stop 可以终结一个线程,但这些方法已经不推荐使用,存在安全性问题,停止一个线程最好的方式是让它自然结束,常用的方式是使用一个 volatile 变量来控制线程是否继续运行。

suspend、stop 不再推荐使用的原因是容易引发死锁,当一个线程持有锁的时候它被挂起或暂停掉了,此时锁还没有释放,其他线程无法获取所就会出现思索,最好的方式是让线程自然结束。

深入理解Java多线程(一):线程基础知识总结

刘启春

Java 线程的实现

Java 线程在 JDK1.2 之前,是基于称为“绿色线程”的用户线程实现的,而在 JDK 1.2 中,线程模型替换为基于操作系统原生线程模型来实现,因此,在目前的 JDK 版本中,操作系统支持怎样的线程模型,在很大程度上决定了 Java 虚拟机的线程是怎样映射的,这点在不同平台上没有办法达成一致,虚拟机规范中也并未限定 Java 线程需要使用哪种线程模型来实现。

举个例子,对于 Sun JDK 来说,它的 Windows 版与 Linux 版都是使用一对一的线程模型实现的,一条 Java 线程就是映射到一条轻量级进程之中,因为 Windows 和 Linux 系统提供的线程模型就是一对一的。

总结:java 线程与操作系统线程是一对一的,在 linux 上通过调用 pthread 库创建线程。

Java|深入理解Java集合框架

刘启春

Java 集合实现了常用数据结构,是开发中最常用的功能之一。

Java 集合主要的功能由三个接口:List、Set、Queue 以及 Collection 组成。

常见接口:

  • List : 列表,顺序存储,可重复
  • Set :集合,与数学中的集合有同样的特性:元素不能重复
  • Queue:队列
  • Collection:所有 Java 集合的接口,定义了“集合”的常用接口

Java|内部类总结

刘启春

一、什么是内部类?

内部类是在一个类中的类,类的声明可在类中或方法中。

内部类的特点

优点:

  • 内部类可以方便的访问外部类的隐式成员变量
  • 一个类作为内部类是一种很好的信息隐藏,例如静态内部类需要使用 类名.内部类 引出,成员内部类使用 对象.内部类 引出
  • 内部类可以实现单继承的局限性

缺点:

  • 结构复杂

结构复杂体现下内部类的访问、内部类中使用外部类的成员变量等方面。

Java|Lambda、函数式接口使用

刘启春

Lambda 是 JDK8 的新特性,Lambda 让 Java 支持了函数式的编程,如 JS 那样可以在参数中使用函数(JS 中函数是对象)。

这些特性是 Java8 的一些特性,使用这些特性能够简化我们的代码,让代码更清晰。

Java 静态代理动态代理

刘启春

代理的功能也就如这个模型一样, 对销售这个流程多了些处理, 原先供应商直接出售给客户的商品, 由代理商宣传销售.

代理在 java 中, 一般是对方法做出一些修改, 具体要看应用场景, 如:

  • 抽离多个方法中重复代码(Spring AOP 就是这样)
  • 过滤器, 拦截器
  • 对其他包中对象的方法进行修改/增强