huangziqiang
huangziqiang
全部文章
java
面试(1)
归档
标签
去牛客网
登录
/
注册
huangziqiang的博客
全部文章
/ java
(共45篇)
简述CountDownLatch、CyclicBarrier、Semaphore
CountDownLatchcountDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,调用countDown方法,计数器的值就减1,当计数器的值为0时,表示所有线程都执行完毕,然后在等待的线程就可以恢复...
2021-09-21
0
368
简述阻塞队列
阻塞队列是生产者消费者模式的实现具体组件之一。当阻塞队列为空时,从队列中获取元素的操作将会被阻塞,当阻塞队列满了,往队列添加元素的操作将会被阻塞。具体实现有:1)ArrayBlockingQueue:底层是由数组组成的有界阻塞队列。2)LinkedBlockingQueue:底层是由链表组成的有界阻...
2021-09-21
0
434
线程间通信的方式与进程间通信的方式
线程间通信的方式1)volatile 关键字修饰变量,保证所有线程对变量访问的可见性。2)synchronized关键字。确保多个线程在同一时刻只能有一个处于方法或同步块中。3)wait/notify方法4)IO 通信 进程间通信的方式
2021-09-21
0
515
简述Java线程的状态,什么是阻塞状态
线程一共有5种状态: 1.新建状态 2.就绪状态 3.运行状态 4.阻塞状态(等待阻塞,同步阻塞,其他阻塞) 5.死亡状态 它们之间的运行关系 参考链接:https://blog.csdn.net/weixin_42092787/article/details/108048850
2021-09-21
0
357
面试官:说说常见的十大排序算法吧
十大内部排序算法综述 关于时间复杂度: 1)平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 2)线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。 3)O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。希尔排序。 4)线性阶 (O(n))...
2021-09-20
0
547
ArrayList和LinkedList有什么区别
* ArrayList是怎么实现的?ArrayList 实现了 List 接口,继承了 AbstractList 抽象类,底层是基于数组实现的,并且实现了动态扩容。 public class ArrayList<E> extends AbstractList<E> ...
2021-09-20
0
359
as-if-serial规则和happens-before
as-if-serial规则和happens-before规则的区别? 区别:as-if-serial定义:无论编译器和处理器如何进行重排序,单线程程序的执行结果不会改变。happens-before定义:一个操作happens-before另一个操作,表示第一个的操作结果对第二个操作可见,并且第...
2021-09-17
0
786
说一下volatile吧
volatile的作用是什么?1)保证变量对所有线程的可见性。当一条线程修改了变量值,新值对于其他线程来说是立即可以得知的。2)禁止指令重排序优化。使用 volatile 变量进行写操作,汇编指令带有 lock 前缀,相当于一个内存屏障,编译器不会将后面的指令重排到内存屏障之前。 volatile...
2021-09-17
0
445
hashMap之putVal()
一、hash值: hash(key){ return (key==null)?0:(h=key.hashCode())^(h>>>16); }1.h>>>16:无符号右移,取出h的高16位,由于在put方法中,哈希值要与(length-1)做运算,length一般...
2021-09-17
0
564
JMM
内存模型会出现什么问题呢?1)线程A获取到共享变量X的值,此时本地内存A中没有X的值,所以加载主内存中的X值并缓存到本地内存A中,线程A修改X的值为1,并将X的值刷新到主内存中,这时主内存及本地内存中的X的值都为1。2)线程B需要获取共享变量X的值,此时本地内存B中没有X的值,加载主内存中的X值并缓...
2021-09-17
0
360
首页
上一页
1
2
3
4
5
下一页
末页