Java
Java|使用Java注解
这个注解完成了一个 Servlet 代理多个请求。
ServletMapping 注解
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface ServletMapping {
String value() default "";
}
深入理解Java多线程(四):锁、锁工具、并发容器
JUC 提供了一套锁对象,分别是:Lock 接口、AbstractQueuedSynchronizaer(队列同步器)、ReentrantLock、ReentrantReadWriteLock、Condition、LockSupport。
深入理解Java多线程(三):JUC基础篇
这篇文章主要侧重讲 JUC 的多数类的使用,文章里贴了很多练习的代码,可以通过代码更加深刻的了解这些类的功能。
这篇文章主要总结了 volatile、原子类、ReentrantLock、CountDownLatch、CyclicBarrier、Phaser、Semphore、Exchanger 的使用,然后进行了一些对比。
深入理解Java多线程(二):多线程问题学习总结
学了一段时间多线程方面的知识了总感觉掌握的知识有些散乱,在网上搜了一些面试问题总结梳理一下。
多线程
java 中有几种方法可以实现一个线程?
Java 中有四种方式实现一个线程。
- 通过实现一个 Runnable
- 继承 Thread 并重写 run 方法
- 继承 Callable,用 Future 接收可以实现异步调用
- 使用线程池(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 就是这样)
- 过滤器, 拦截器
- 对其他包中对象的方法进行修改/增强