
java
_acme_
这个作者很懒,什么都没留下…
展开
-
通过手撸线程池深入理解其原理(下)
上篇实现了简单的无锁线程池,中篇实现了简单的加锁线程池,本篇着重剖析java线程池源码。原创 2020-06-13 17:03:01 · 1262 阅读 · 0 评论 -
通过手撸线程池深入理解其原理(中)
==> 学习汇总(持续更新)==> 从零搭建后端基础设施系列(一)-- 背景介绍摘要:上篇实现了简单的无锁线程池,本篇开始实现有锁线程池。先来思考一下,为什么线程池需要锁?在没有锁的线程池中,就算是单线程提交,也可能会涉及到并发的问题,如果是多线程提交任务,这时候出错的概率基本是百分百了。一、什么是锁?在开始写代码之前,先简单认识一下锁的本质是什么,先来看一张图。中间那个管道就相当于锁,不管外面有多少个线程,这个管道只能一一通过。二、ThreadPoolV5线程池参数:wo原创 2020-06-04 01:25:22 · 864 阅读 · 0 评论 -
java并发编程浅析
建议使用Runnable,使Thread和Task解耦当需要汇总多线程的计算结果时,使用Callable取消线程需要注意时间节点,运行前取消则线程不再运行,运行中取消,若不是线程休眠中取消,则只是简单通过标志位通知线程是否响应该操作,运行完成取消,返回false线程池核心线程是不会被回收的,除非线程池关闭,非核心线程可以设置回收时间,但是只能是该线程空闲才会回收建议重写拒绝策略,防止抛异常影响其它业务逻辑scheduleWithFixedDelay和scheduleAtFixedRate的区别,前原创 2019-05-23 09:25:42 · 677 阅读 · 0 评论 -
插入、快排、堆排、归并、计数和桶排序详解以及测试
代码 核心思想 测试结果 总结 一、代码 package com.example.sort;import java.util.ArrayList;import java.util.Comparator;import java.util.Random;public class Sort { public static void main(String[] ...原创 2019-05-31 15:21:54 · 2424 阅读 · 0 评论 -
JDK1.8 HashMap put源码剖析
从一个最简单的例子开始剖析hashmap的源码Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < 10; i++) { map.put(i, i); }内部都发生了什么? 跟着put方法进去看看public V put(K key, V value) { return...原创 2019-06-30 02:45:44 · 1064 阅读 · 0 评论 -
jdk1.8 LinkedHashMap源码剖析
LinkedHashMap字面上意思是链表HashMap,那么到底增加了什么特性呢?从一个简单的case剖析下去Map<Integer, Integer> map = new HashMap<>();map.put(3, 3);map.put(5, 5);map.put(1, 1);map.forEach((k, v) -> System.out.prin...原创 2019-07-01 01:30:06 · 674 阅读 · 0 评论 -
深入浅出JAVA BIO、NIO和AIO(附详细代码实例)
1.深入浅出之BIO 1.1 简单代码示例 1.2 BIO相关概念 1.3 一张图理解BIO 1.4 Q&A 2.深入浅出之NIO 2.1 简单代码示例 2.2 NIO相关概念 2.3 一张图理解NIO 2.4 Q&A 3.深入浅出之AIO 3.1 简单代码示例 3.2 AIO相关概念 3.3 一张图理解AIO 3.4 Q&A ...原创 2019-09-12 00:08:20 · 4211 阅读 · 3 评论