加载中
Java输入输出

JDK中的InputStream/OutputStream构成了IO输入输出继承层次的基础。它们都是面向字节序列的,每次可以从序列中读入或者写出一个字节或者指定大小的字节数组。但是面向字节流的输入输出不便于...

前天 10:31
9
Java执行器

构建一个新的线程是有一定代价的, 因为涉及与操作系统的交互。 如果程序中创建了大量的生命期很短的线程, 应该使用线程池(thread pool )。 一个线程池中包含许多准备运行的 空闲线程。 将 ...

11/16 12:23
5
实现线程的第三种方式——Callable & Future

Callable Runnable 封装一个异步运行的任务, 可以把它想象成为一个没有参数和返回值的异步方 法。Callable 与 Runnable 类似, 但是有返回值。Callable 接口是一个参数化的类型, 只有一 个...

11/16 00:49
19
阻塞队列

对于许多线程问题, 可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插人元素, 消费者线程则取出它们。 使用队列, 可以安全地从一个线程向另 一个线程传递数据...

读写锁分离

java.util.concurrent.locks包定义了两个锁类, 我们已经讨论的ReentrantLock类和 ReentrantReadWriteLock 类。 如果很多线程从一个数据结构读取数据而很少线程修改其中数 据的话, 后者是十...

11/15 19:40
7
申请锁和等待超时

线程在调用 lock 方法来获得另一个线程所持有的锁的时候, 很可能发生阻塞。 应该更加 谨慎地申请锁。tryLock方法试图申请一个锁,在成功获得锁后返回true, 否则,立即返回 false, 而且线程可...

11/15 19:27
4
线程局部变量ThreadLocal

一般我们考虑的是在线程间共享变量的风险。 有时可能要避免共享变量, 使用 ThreadLocal 辅助类为各个线程提供各自的实例。 ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withI...

11/15 19:03
5
JDK中原子性的支持

在Java开发中,假设对共享变量除了赋值之外并不完成其他操作, 那么可以将这些共享变量声明为 volatile 或者final。 然而经常我们除了对共享变量赋值之外,还需要对共享变量进行修改操作,比...

11/15 15:02
9
Java中的线程安全

一个线程不安全的例子 银行中不同的账户之间转账的操作,源账户减少,目的账户增加。观察金额总数的变化是否符合预期,按照日常,应该是保证总金额不变才对的。 创建一个Bank类,包含转账和得...

11/15 14:26
6
Java线程基本概念

Java线程中断 在Java中,没有可以强制线程终止的方法。 然而, interrupt 方法可以用来请求终止线程。当对一个线程调用 interrupt 方法时, 线程的中断状态将被置位。 public void interrup...

11/15 09:32
11
集合之TreeMap

在HashMap中,使用的是数组加链表或者红黑树实现的,而TreeMap也是Map的一种实现,基于红黑树,首先看看TreeMap的继承层次:

11/14 22:26
2
集合之HashMap

首先看看HashMap在JDK中的继承层次: 在HashSet中,我们说过元素使用hashcode保存的存储结构: 保存的键值对根据键得到hashcode,然后和bucket总数取余得到位置索引,然后将数据保存到后面的...

映射——Map接口定义

在数据结构中,还有一种用于存放key/value对的结构,那就是Map,在之前的HashSet和TreeSet集合中,其实它们的实现都是调用Map的实现,那么Map本身在JDK中又是怎样的实现呢,从Map接口的定义开...

11/14 16:34
5
集合之队列[Queue, Deque],双端队列[ArrayDeque, LinkedList],优先级队列[PriorityQueue]

数据结构中的队列了解以下,"先进先出"是队列的最大的特点,也就是只能在头部访问一个元素,在尾部添加一个元素。还有一种叫做双端队列。可以有效地在头部和尾部同时添加或删除元 素。 不支持...

11/14 13:33
6
集合之TreeSet

TreeSet和HashSet类似,但是TreeSet是一个有序的集合,内部的排序是使用红黑树完成的,因为排序,所以放入TreeSet集合中的元素都必须实现Comparable接口。 从这个继承层次中我们发现TreeSet...

集合之HashSet

在ArrayList和LinkedList中,元素在集合中的顺序总是可以按照人们的理想的次序出现,但是当我们需要访问某个元素但是不知道它的位置时,那么就需要遍历整个集合,在元素较多的情况下,效率就会...

11/13 23:47
5
集合之ArrayList

List接口下的实现类用于描述一个有序集合,并且集合中每个元素的位置确定,那么访问集合元素的方法有两种:一种是迭代访问,另外一种就是set和get随机访问了,在LinkedList中,我们基于链表实...

集合之LinkedList

在JDK中,实现了链表这种数据结构,就是LinkedList,它是双向链表的实现。首先看看它的继承层次。了解它的功能: LinkeList继承的抽象类是AbstractSequentialList,在这个抽象类中有几个随机...

Java集合框架

JDK中集合的设计是接口与实现分离的,比如说队列的设计来说,首先是定义一个接口: public interface Queue extends Collection { } 接口中并没有定义是如何实现的,针对Queue的实现有两种方...

Java异常处理

在JDK中,Java异常相关的类继承层次: 继承层次中各司其职: 抛出异常 如果在子类中覆盖了超类的一个方法, 子类方法中声明的受查异常不能比超类方 法中声明的异常更通用(也就是说, 子类方法...

11/12 19:29
6

没有更多内容

加载失败,请刷新页面

返回顶部
顶部