Java中的字符串 发表于 2019-12-20 | 分类于 Java知识 字数统计: 619 引言在Java中与字符串有关的类有String、StringBuilder、StringBuffer。 阅读全文 »
Thread 发表于 2019-12-20 | 分类于 Java知识 字数统计: 614 通用的线程生命周期通用的线程生命周期可以用五态模型来描述。这五态分别是:初始状态、可运行状态、运行状态、休眠状态和终止状态。 123456789//五态模型//// 初始状态// ↓// 可运行状态←---// ↑↓ ↑// 运行状态 → 休眠状态// ↓// 终止状态 初始状态。线程已经被创建,但是还不允许分配CPU执行。这个状态属于编程语言特有的,在操作系统层面,真正的线程还没有创建。 可运行状态。真正的操作系统线程已经成功创建,线程可以分配 CPU 执行。 运行状态。当有空闲的CPU时,操作系统会将其分配给一个处于可运行状态的线程,被分配到CPU的线程为、运行状态。 休眠状态。运行状态的线程如果调用一个阻塞API,那么线程的状态就会转换到休眠状态。 终止状态。线程执行完或者出现异常就会进入终止状态,终止状态的线程不会切换到其他任何状态,进入终止状态也就意味着线程的生命周期结束了。 在不同的编程语言中,线程状态也不同。在Java中,线程共有6种状态,合并了可运行和运行状态,细化了休眠状态。在Thread类中有枚举来详细定义和说明: 阅读全文 »
Collection_List_Set 发表于 2019-12-19 | 分类于 Java知识 字数统计: 157 Collection、List与Set接口Collection代表一群元素的集合,至于这群元素怎么排列、是否可重复、是否有序等特性,Collection接口没有作定义。 List和Set继承了Collection接口,他们都具体描述了这群集合元素的特性。 List描述了这群元素是有序且允许重复元素的,用户可通过序号精准地访问到元素。所以List比Collection多的方法,大多跟index有关,比如void add(int index, E e)。 Set描述了这群元素是无序且没有重复元素的,Set没有扩展Collection的方法,方法与Collection一样。
String_intern 发表于 2019-12-19 | 分类于 Java知识 字数统计: 611 String internString类中有个intern()的native,该方法会查询常量池中是否存在该字符串,若存在,则返回;若不存在则加入常量池并返回。在实现细节方面,JDK6又是与JDK7是不一样的。 阅读全文 »
并发编程之协作 发表于 2019-12-10 | 分类于 并发编程 字数统计: 2.5k 并发编程领域可以抽象为3个核心问题:分工、协作、互斥。 本文介绍协作。 在多线程环境中,多个线程之间会有依赖关系,例如该任务完成后如何通知后续任务开始。Java JDK中提供了Semaphore、CountDownLatch、CyclicBarrier等工具来完成线程之间的协作。这些工具是针对特定场景抽象出的解决方案,若遇到某些特殊场景无法使用工具的,则需要自己完成线程之间的协作。这时可以使用管程(Monitor)来完成,管程是Java并发领域解决协作问题的核心方法,JDK中线程协作工具的底层实现都是管程。 阅读全文 »
Reference 发表于 2019-12-06 | 分类于 Java知识 字数统计: 198 ReferenceReference类有个静态的代码块,在这里面会运行一个后台线程,用于将被回收的对象放入引用队列。将对象放入引用队列便于后续进一步的清理操作。 阅读全文 »
HTTP 发表于 2019-12-01 | 分类于 网络协议 , HTTP 字数统计: 115 Http1.1虽然有着pipeline,但响应和请求还是按顺序出现的。如果前面的响应阻塞了,后面的响应也会跟着阻塞。 阅读全文 »