![](https://img-blog.csdnimg.cn/20200802102703442.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java
文章平均质量分 59
java
crazy-tiger
开弓没有回头箭
展开
-
JDK8中关于最小堆的实现(PriorityBlockingQueue)
java.util.concurrent.PriorityBlockingQueue#siftUpComparable代码很简单,记录一下。 /** * Inserts item x at position k, maintaining heap invariant by * promoting x up the tree until it is greater than or equal to * its parent, or is the root. .原创 2021-12-26 09:50:41 · 243 阅读 · 0 评论 -
从ReentrantLock的实现看AQS的原理及应用(转自美团技术团队)
前言Java中的大部分同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueuedSynchronizer(简称为AQS)实现的。AQS是一种提供了原子式管理同步状态、阻塞和唤醒线程功能以及队列模型的简单框架。本文会从应用层逐渐深入到原理层,并通过ReentrantLock的基本特性和ReentrantLock与AQS的关联,来深入解读AQS相关独占锁的知识点,同时采取问答的模式来帮助大家理解AQS。由于篇幅原因,本篇文章主要阐述AQS中独占锁的逻辑和Sync转载 2021-05-24 09:36:39 · 327 阅读 · 2 评论 -
Java 创建钩子 Hook
创建钩子JVM 在正常退出时,会启动钩子做一些善后事情。import java.util.concurrent.TimeUnit;/** * 钩子测试 * <p> * * @author hyl * @version v1.0: HookTest.java, v 0.1 2021/1/8 15:22 $ */public class HookTest { public static void main(String[] args) { Runt.原创 2021-01-08 15:44:12 · 386 阅读 · 0 评论 -
Java 之 IO 和 NIO
Java I/O 系统《Java 编程思想》第四版,第18章笔记。对程序语言的设计者来说,创建一个好的输入/输出(I/O)系统是一项艰难的任务。现有的大量不同方案已经说明了这一点。挑战似乎来自于要涵盖所有的可能性。不仅存在各种 I/O 源端的想要与之通信的接收端(文件、控制台、网络链接等),而且还需要以多种不同的方式与它们进行通信(顺序、随机存取、缓冲、二进制、按字符、按行、按字等)。Java 类库的设计者通过创建大量的类来解决这个难题。一开始,可能会对 Java I/O 系统提供了如此多的类而原创 2021-01-01 13:54:40 · 235 阅读 · 0 评论 -
HashMap里的一个小例子(Set作为key)
最近和朋友讨论时,突然朋友抛出一段代码。如下: Map<Set,Integer> map = new HashMap<>(); Set s1 = new HashSet(); s1.add(1); s1.add(2); Set s2 = new HashSet(); s2.add(1); s2.add(2); map.put(s1,1); map.put(s2,2); System.out.println(map.size(原创 2020-12-03 09:53:58 · 750 阅读 · 0 评论 -
Michael-Scott(Michael and Scott,1996)非阻塞算法中的插入算法
Michael-Scott(Michael and Scott,1996)非阻塞算法中的插入算法原创 2020-10-22 19:37:23 · 380 阅读 · 0 评论 -
使用 Treiber 算法(Treiber,1986)构造的非阻塞栈
使用 Treiber 算法(Treiber,1986)构造的非阻塞栈原创 2020-10-22 17:35:04 · 223 阅读 · 0 评论 -
ThreadPoolExecutor的饱和策略——线程池
线程池的四种饱和策略说明。原创 2020-10-14 20:27:49 · 1060 阅读 · 0 评论 -
CompletionService 使用说明
读《Java并发编程实战》6.3.5 笔记。如果向 Executor 提交了一组计算任务,并且希望在计算完成后获得结果,那么可以保留与每个任务的关联的 Future,然后反复使用 get 方法,同时将参数 timeout 指定为 0,从而通过轮询来判断任务是否完成。这种方法虽然可行,但却有些繁琐。幸运的是,还有一种更好的方法:完成服务 (CompletionService)说明:CompletionService 将 Executor 和 BlockingQueue 的功能融合在一起。.原创 2020-10-13 20:06:45 · 429 阅读 · 0 评论 -
使用volatile类型发布不可变对象 ( 转 )
最近在看《java并发编程实践》这本书,看到关于不可变对象的介绍,以前并没有接触过,感觉不错。在这里介绍一下。volatile简介volatile 是 java 的一种削弱的同步,volatile 的功能只是能够保证对于变量修改时能够保证立即写入内存。被声明的变量能够保证可见性,但是并不能够满足原子性,整个过程中还是可以同时被其他的线程改变。所以volatile使用有一定的局限性,对于 volatile 的详细介绍可以参考一下这里,我就不班门弄斧了,这里主要介绍一下一种新学习的处理同步的方法:不可变.转载 2020-10-11 16:13:33 · 312 阅读 · 0 评论 -
HashMap——哈希值计算和组数下标计算
要计算HashMap中对应的数组下标,必然要进行获取哈希值,HashMap对key的哈希值做了离散处理。JDK7、JDK8原创 2020-09-29 05:41:52 · 1844 阅读 · 0 评论 -
HashMap——组数容量计算
这里主要是讨论 HashMap 在组数容量计算中寻找一个大于等于给定数的 2 次方数.JDK7、JDK8。原创 2020-09-29 04:21:12 · 477 阅读 · 0 评论 -
wait 方法注释中的标准使用模式(JDK 8)
查看 java.lang.Object#wait(long) 方法的注释时,发现了在注释中给了一个使用范例,同时JDK中也其他地方竟然也使用了这种范例,于是来了兴趣,记录一下。一、原注释简要说明,就是为了防止 “ 伪唤醒 ”等,需要使用条件循环来做再次判断。好的。这里提到了两本书有详细的介绍。找了这两本书的说明如下:1.1 、《Java并发编程实战》说明:过早唤醒虽然在锁、条件谓词和条件队列之间的三元关系并不复杂,但 wait 方法的放回并不一定意味着线程正在等待的条件谓词已经变成真了。.原创 2020-09-23 22:59:20 · 297 阅读 · 0 评论 -
从源码注释中了解 sleep 和 wait 的区别(JDK 8)
sleep 指的是 java.lang.Thread#sleep(long)wait 指的是 java.lang.Object#wait()一、源码注释sleep :wait :这里调用了 wait(0);,所以这里也贴出 wait(long)。wait(long) :二、解读2.1、sleep从注释中可以得到如下几点:1、thread to sleep 线程进入休眠,线程的状态是TIMED_WAITING。2、The thread does not lose owner.原创 2020-09-23 08:47:16 · 400 阅读 · 0 评论 -
Java 中断线程 (JDK 8)
读《Java核心技术 卷一》记录。当线程得 run 方法执行方法体中最后一条语句后,并经由执行 return 语句返回时,或者出现了在方法中没有捕获的异常时,线程将终止。在Java的早期版本中,还有一个 stop 方法,其他线程可以调用它终止线程。但是,这个方法现在已经被弃用了。(因为暴力停止)没有可以强制线程终止的方法。然而,interrupt 方法可以用来请求终止线程。当对一个线程调用 interrupt 方法时,线程的中断状态将被置位。这是每个线程都具有的 Boolean 标志。每个线程都应.原创 2020-09-23 03:48:43 · 293 阅读 · 0 评论 -
完整的Java简单浏览器
package bw; import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import ...转载 2016-05-04 16:22:09 · 5916 阅读 · 3 评论 -
java删除文件夹(整个删除,Spring实现)
从Spring中获取灵感,实现的非递归文件夹内文件名方式,删除文件夹。原创 2019-12-02 23:51:16 · 2094 阅读 · 0 评论 -
Java IO 操作——个人理解
之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理(原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。 数据来源的操作:来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。 File file = new File("path");字节操作:将数据从最原始状态转换为字节流...原创 2018-04-18 23:21:03 · 208 阅读 · 0 评论 -
java的finalize方法
说明当一个对象被可行性分析判断为不可达对象的时候,会被第一次标记,判断finalize方法是否重写,或者已经执行,如果没有,那么该对象会被分配到一个F-Queue队列中。虚拟机会自动建立一个低调度优先级的Finalizer线程去执行。当再次标记为不可达对象的时候,不再执行。只会执行一次允许该对象在方法内被再次调用(复活)finalize方法内的任何异常都会忽略源码注释 /** * Called by the garbage collector on an object whe原创 2020-07-03 05:36:31 · 829 阅读 · 0 评论 -
JDK8 提供的标准函数接口
《Effective Java》 第44条:坚持使用标准的函数接口一、6个基本函数接口java.util.function包下共有43个接口。别指望能全部记住它们,但是如果能记住其中6个基本接口,必要时就可以推断出其余接口了。基础接口作用于对象引用类型:【6】UuaryOperator、BinaryOperator接口代表其结果与参数类型一致的函数。Predicate接口代表带有一个参...原创 2020-01-03 00:32:39 · 480 阅读 · 0 评论 -
一种分页读取文件的方式(JDK8)
话不多说,直接上代码import java.nio.file.Files;import java.nio.file.Path;import java.nio.file.Paths;import java.util.List;import java.util.function.Function;import java.util.stream.Collectors;import ja...原创 2019-05-16 19:14:21 · 1252 阅读 · 3 评论 -
关键字synchronized、volatile的比较
关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰于变量,而synchronized可以修饰方法,以及代码块。随着JDK新版本的发布,synchronized关键字的执行效率上得到很大提升,在开发中使用synchronized关键字的比率还是比较大的。 多线程访问volatile不会发生阻塞,而synchroni...转载 2018-09-09 19:01:13 · 153 阅读 · 0 评论 -
java开发基本原则
--看书的记录,方便以后回看OCP(开闭原则):对扩展开发,对修改关闭。 LSP(里氏代换原则):凡是基类能使用的地方,子类也一定能使用。 DIP(依赖倒转原则):要依赖于抽象,不要依赖于具体。 ISP(接口隔离):接口尽量单一,只代表一个角色。 CARP(合成/聚合复用):尽量使用合成/聚合复用,尽量不要使用继承。 LOD(迪米特原则):一个对象应当对其他对象的细节有尽可能少的了解...转载 2018-08-25 09:56:28 · 267 阅读 · 0 评论 -
浅析Java中的final关键字
转自http://www.cnblogs.com/dolphin0520/p/3736238.html 浅析Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java...转载 2018-04-16 22:21:19 · 118 阅读 · 0 评论 -
java 进程 返回值
实现 Callable 接口与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。public class MyCallable implements Callable<Integer> { public Integer call() { return 123; }}public static void...原创 2018-04-11 14:47:51 · 795 阅读 · 0 评论 -
mac jdk 1.7 dmg 官方版
百度云下载 https://pan.baidu.com/s/1SQiidrPFF5aZr4xlx0ekoQhttps://pan.baidu.com/s/1SQiidrPFF5aZr4xlx0ekoQ原创 2018-04-09 18:16:14 · 18623 阅读 · 11 评论