如何在主线程捕获子线程的异常 发表于 2020-07-17 | 分类于 并发编程 字数统计: 116 | 阅读时长 ≈ 1 [TOC] 通过对线程调用setUncaughtExceptionHandler,对处理器实现Thread.UncaughtExceptionHandler的接口 1234567891011121314151617181920212223242526272829303132333435class ... 阅读全文 »
守护线程与非守护线程 发表于 2020-07-17 | 分类于 并发编程 字数统计: 443 | 阅读时长 ≈ 2 [TOC] 概念进程中会同时存在二种线程:也就是守护线程和非守护线程,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。 将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。但是必须 ... 阅读全文 »
Java中如何正常终止线程 发表于 2020-07-17 | 分类于 并发编程 字数统计: 498 | 阅读时长 ≈ 2 [TOC] 使用退出标志使线程正常退出,也就是当 run() 方法完成后线程中止。 1234567891011121314151617181920212223242526class test extends Thread{ public volatile boolean state ... 阅读全文 »
序列化和反序列化 发表于 2020-07-16 | 分类于 Java基础 字数统计: 268 | 阅读时长 ≈ 1 [TOC]当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。 好处: 一是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里),二是,利用序列化实现远程通信,即在网络上传送对象的字节序列。 1 ... 阅读全文 »
CyclicBarrier剖析 发表于 2020-07-16 | 分类于 并发编程 字数统计: 466 | 阅读时长 ≈ 1 [TOC] 概念用来控制多个线程互相等待,只有当多个线程都到达时,这些线程才会继续执行。和 CountdownLatch 相似,都是通过维护计数器来实现的。线程执行 await() 方法之后计数器会减 1,并进行等待,直到计数器为 0,所有调用 await() 方法而在等待的线程才能继续执行。 do ... 阅读全文 »
CountDownLatch剖析 发表于 2020-07-16 | 分类于 并发编程 字数统计: 1.7k | 阅读时长 ≈ 7 [TOC] 概念用来控制一个线程等待多个线程。维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 1234567891011121314151617class test { ... 阅读全文 »
String、StringBuffer、StringBuilder 发表于 2020-07-14 | 分类于 Java基础 字数统计: 286 | 阅读时长 ≈ 1 [TOC] 概览String 被声明为 final,因此它不可被继承。在 Java 8 中,String 内部使用 char 数组存储数据。 12345public final class Stringimplements java.io.Serializable, Comparable<St ... 阅读全文 »
PriorityQueue源码剖析 发表于 2020-07-13 | 分类于 Java基础 字数统计: 1.7k | 阅读时长 ≈ 7 [TOC] 引言Java的集合框架,PriorityQueue源码解析等… 概述前面以Java ArrayDeque为例讲解了Stack和Queue,其实还有一种特殊的队列叫做PriorityQueue,即优先队列。优先队列的作用是能保证每次取出的元素都是队列中权值最小的(Java的优先队列每次取最 ... 阅读全文 »
Stack&Queue源码剖析 发表于 2020-07-13 | 分类于 Java基础 字数统计: 1.9k | 阅读时长 ≈ 7 [TOC] Stack & Queue概述Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字)。当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque;既然Queue只是一个接口,当需要使用队列时也就首选ArrayDeque了(次选 ... 阅读全文 »
HashMap-ConcurrentHashMap面试必问 发表于 2020-07-13 | 分类于 Java容器 字数统计: 3.9k | 阅读时长 ≈ 17 [TOC] HashMap众所周知,HashMap的底层结构是数组和链表组成的,不过在jdk1.7和jdk1.8中具体实现略有不同。 jdk1.7先看图 再看看1.7的实现 介绍成员变量: 初始化桶大小,因为底层是数组,所以这是数组默认的大小。 桶最大值。 默认的负载因子(0.75) table真 ... 阅读全文 »