LeetCode-数组-删除有序数组重复元素

题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 解题思路 采用...

date_range2019-02-26 bookmark_border LeetCode  

LeetCode-数组-三数之和

题目描述给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 习题原文 解题思路 求三数之和为 0, nums[i] + nums[j] + nums[k] = 0 可以转换为求两个数之和,也即是 nu...

date_range2019-02-24 bookmark_border LeetCode  

Thread的中断理解

Thread 的中断理解 首先我们需要明确一个概念 中断并非是终止。 interrupt() 线程中断方法, 调用该方法时会将线程的中断标志位标记为 true; (注意你可以理解为只是单纯的改变下标记,并不是使线程停止运行) isInterrupted() 获取线程的中断标志位,也就是判断是否被中断过; true 表示被中断过 Interr...

date_range2018-12-28 bookmark_border 多线程  

FutureTask 源码分析

FutureTask 源码分析 基于 JDK 1.7 成员变量 private volatile int state; private static final int NEW = 0; private static final int COMPLETING = 1; private stat...

date_range2018-12-25 bookmark_border jdk   多线程  

DelayQueue 延迟阻塞队列使用及分析

延迟阻塞队列 DelayQueue DelayQueue 是一个支持延时获取元素的阻塞队列, 内部采用优先队列 PriorityQueue 存储元素,同时元素必须实现 Delayed 接口;在创建元素时可以指定多久才可以从队列中获取当前元素,只有在延迟期满时才能从队列中提取元素。 使用场景 因延迟阻塞队列的特性, 我们一般将 DelayQueue...

date_range2018-12-22 bookmark_border jdk   多线程  

ThreadPoolExecutor线程池的实现分析

ThreadPoolExecutor 线程池在 JAVA 中是运用场景最多的并发框架,合理的运用线程池能够带来以下好处: 降低资源消耗。 提高响应速度。 提高线程的可管理性 构造public ThreadPoolExecutor(int corePoolSize, int maxim...

date_range2018-12-20 bookmark_border jdk   多线程  

Semaphore-源码分析

Semaphore Semaphore 信号量:可以用来控制同时访问特定资源的线程数量;通过协调各个线程以保证合理的使用公共资源。 构造// permits 设置许可证的数量 public Semaphore(int permits) { // 默认非公平 sync = new NonfairSync(permits); } //...

date_range2018-12-15 bookmark_border jdk   多线程  

ReentrantReadWriteLock-读写锁源码分析

ReentrantReadWriteLock 读写锁 读写锁不同于 ReentrantLock ,ReentrantLock 是排他锁同一时刻只允许一个线程访问,而读写锁同一时刻允许多个读线程访问,但是在写线程操作时,所有的读写操作均被阻塞。 读写状态实现 如何通过一个 int 值记录读状态,写状态呢 ? 在 ReentrantReadWrit...

date_range2018-12-13 bookmark_border jdk   多线程  

ReentrantLock-重入锁源码分析

ReentrantLock 重入锁, 表示该锁支持一个线程对资源的重复加锁 类结构首先让我们先看下 ReentrantLock 的类结构如下图所示: 从图中我们可以看出 ReentrantLock 实现 Lock 接口,同时内部类 Sync 是 AQS 的子类;而 Sync 又有两个子类 NonfairSync 和 FairSync 分别对应非...

date_range2018-12-11 bookmark_border jdk   多线程  

CyclicBarrier 同步屏障的源码分析

CyclicBarrier CyclicBarrier 是可循环使用的屏障,主要功能是让一组线程到达一个屏障时被阻塞,直到最后一个线程到达屏障时,屏障才会打开;所有被屏障拦截的线程才会继续执行。 使用示例public class CyclicBarrierTest { // 线程个数 private int parties = ...

date_range2018-12-09 bookmark_border jdk   多线程