page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6250 次

3096 个回答

0 赞同

执行 execute() 方法和 submit() 方法的区别是什么呢?

1、 execute() 方法用于提交不需要返回值的任务,所以无法判断任务是否被线程池执行成功与否; 2、 submit() 方法用于提交需要返回值的任务。线程池会返回一个 Future 类型的对象,通过这个 Future 对象可以判断任务是否执行成功,并且可 以通过 Future 的 get() 方法来获取返回值,get() 方法会阻塞当前线程直到任务完成...

回答于 2022-01-26 16:19

0 赞同

说下对 Fork和Join 并行计算框架的理解?

Fork/Join 并行计算框架主要解决的是分治任务。分治的核心思想是“分而治之”:将一个大的任务拆分成小的子任务的结果聚合起来从而得到最终结果。 Fork/Join 并行计算框架的核心组件是 ForkJoinPool。ForkJoinPool 支持任务窃取机制,能够让所有的线程的工作量基本均衡,不会出现有的线程很忙,而有的线程很闲的情况,所以性...

回答于 2022-01-26 16:19

0 赞同

JDK 中提供了哪些并发容器?

JDK 提供的这些容器大部分在 java.util.concurrent 包中。 ConcurrentHashMap:线程安全的 HashMap; CopyOnWriteArrayList:线程安全的 List,在读多写少的场合性能非常好,远远好于 Vector; ConcurrentLinkedQueue:高效的并发队列,使用链表实现。可以看做一个线程安全的 LinkedList,这是一个非阻塞队列; Blockin...

回答于 2022-01-26 16:18

0 赞同

谈谈对 CopyOnWriteArrayList 的理解?

在很多应用场景中,读操作可能会远远大于写操作。由于读操作根本不会修改原有的数据,因此对于每次读取都进行加锁其实是一种资源浪费。我们应该允许多个线程同时访问 List 的内部数据,毕竟读取操作是安全的。 CopyOnWriteArrayList 类的所有可变操作(add,set 等等)都是通过创建底层数组的新副本来实现的。当 List 需要...

回答于 2022-01-26 16:18

0 赞同

谈谈对 BlockingQueue 的理解?分别有哪些实现类?

阻塞队列(BlockingQueue)被广泛使用在“生产者-消费者”问题中,其原因是 BlockingQueue 提 满,生产者线程会被阻塞,直到队列未满;当队列容器为空时,消费者线程会被阻塞,直至队列 BlockingQueue 是一个接口,继承自 Queue,所以其实现类也可以作为 Queue 的实现来使用,

回答于 2022-01-26 16:16

0 赞同

谈谈对 ConcurrentSkipListMap 的理解?

对于一个单链表,即使链表是有序的,如果我们想要在其中查找某个数据,也只能从头到尾遍历链表,这样效率自然就会很低,跳表就不一样了。 跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们都可以对元素进行快速的查找。 但一个重要的区别是:对平衡树的插入和删除往往很可能导致平衡树进行一次全局的调整。...

回答于 2022-01-26 16:15

0 赞同

说一下 Jvm 的主要组成部分?及其作用?

1. 类加载器(ClassLoader) 2. 运行时数据区(Runtime Data Area) 3. 执行引擎(Execution Engine) 4. 本地库接口(Native Interface) 各组件的作用:首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)再把字节码加载到内存中, 而字节码文件只是 JVM 的一套指令集...

回答于 2022-01-26 16:14

0 赞同

谈谈对运行时数据区的理解?

1. 程序计数器 程序计数器(Program Counter Register):是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 由于 Java 虚...

回答于 2022-01-26 16:14

0 赞同

简单说下对 Java 中的原子类的理解?

这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说 简单点就是具有原子操作特征的类。 并发包 java.util.concurrent 的原子类都存放在 java.util.concurrent.atomic 下。根据操作的数据类型,可以将 JUC 包中的原子类分为 4 类: 1....

回答于 2022-01-25 11:03

0 赞同

atomic 的原理是什么?

Atomic 包中的类基本的特性就是在多线程环境下,当有多个线程同时对单个(包括基本类型及引用类型)变量进行操作时,具有排他性,即当多个线程同时对该变量的值进行更新时,仅有一个线程能成功,而未成功的线程可以向自旋锁一样,继续尝试,一直等到执行成功。 Atomic 系列的类中的核心方法都会调用 unsafe 类中的几个本地...

回答于 2022-01-25 11:02