
Java面试题
文章平均质量分 91
TaoTie830
这个作者很懒,什么都没留下…
展开
-
Java刷题常用API整合
零:输入、输出远程在线面试的手撕代码环节,通常需要白板上写代码。如果需要在控制台输入、输出,需要借助Scanner类。示例如下:import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); //方法1:一般用来接收数组。以空格分界 while(scanner.hasNext()原创 2020-10-16 11:18:13 · 2119 阅读 · 9 评论 -
AQS、CAS详解
AQS详解原子性操作自:原子性在一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。及时在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程所干扰2113CAS:全称(Compare And Swap),比较交换,Unsafe类是CAS的核心类,提供硬件级别的原子操作。CAS 中有三个参数:内存值 V、旧的预期值 E、要更新的值 N ,当且仅当内存值 V 的值等于旧的预期值 A 时,才会将内存值V的值修改为 B ,否则什么都不干。CAS比较与交换的伪代码可以表示原创 2020-06-03 00:51:31 · 643 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocal 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁之外的一种规避多线程访问出现线程不安全的方法,当我们在创建一个变量后,如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。ThreadLocal提供线程本地变量,如果创建一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个原创 2020-05-31 20:38:00 · 1003 阅读 · 0 评论 -
Timer和TimerTask源码解读(面试题:双重定时器)
Timer和TimerTask源码解读Timer是一种定时器工具,用来在一个后台线程计划执行指定任务。它可以计划执行一个任务一次或反复多次。TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。Timer和TimerTask基本使用使用Timer线程实现和计划执行一个任务:实现自定义的TimerTask的子类,run方法包含要执行的任务代码。实例化Timer类,创建计时器后台线程。实例化任务对象 (new RemindTask()).制定执行计划。原创 2020-05-31 13:27:02 · 537 阅读 · 0 评论 -
面试题(一)Java容器——HashMap HashTable ArrayList LinkedList源码解读
1、HashMap 和 HashTable 有什么区别?HashMap:继承AbstractMap<K,V>类,实现了Map<K,V>, Cloneable, Serializable接口采用数组+链表+红黑树实现(jdk1.8后,采用红黑树)非线程安全Key可以为null,但只允许有一个,value可以为null,不限个数默认初始容量为16,每次扩充,容量变为原来的2倍hash计算方式:(key == null) ? 0 : (h = key.hashCode())原创 2020-05-28 09:53:00 · 353 阅读 · 0 评论