许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存、CPU、缓存等予以说明。实际上,在实际的Java开发工作中,…
java中使用ReentrantLock锁中的Condition实现三个线程之间通信,交替输出信息
本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 【按照 线程1(main)–>线程2–>线程3】…
Java并发和多线程(二)Executor框架
Executor框架 1.Task?Thread? 很多人在学习多线程这部分知识的时候,容易搞混两个概念:任务(task)和线程(thread)。 并发编程可以使我们的程序可以划分为多个分离的、独立运行的任务。而这些任务…
LruCache原理分析
LruCache这个类在我们现在应用的开发中已经被普遍使用了,今天我们就深度解析这个类,从原理上掌握作者的设计思想以及实现原理 什么是LruCache 借官方的描述,LruCache就是一个持有一定数量强引用数据的缓存。…
JAVA 多线程静态同步函数的锁是class 对象
//仅作为学习笔记 /* 通过验证发现 同步函数如果被静态修饰后,不再以this 为锁 静态进内存时,内存中没有本类对象,但是一定有该类的字节码文件对象 类名.class 该对象的类型是class 静态的同步方法,使用的…
java 内存模型volatile关键字-05
volatile Java语言规范第三版中对 volatile 的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。 Java语言提供了 vo…
从 Dagger2 源码角度理解 Scope 注解
本文主要从Dagger2生成的源码角度讲解Scope注解的作用 代码已上传至GitHub,戳github.com/tb-yangshu/…,欢迎star或者fork Scope Identifies scope anno…
带有期限的作业排序贪心算法
问题的描述: 带有期限的作业排序要解决的是操作系统中单机、无资源约束且每个作业可在等量的时间内完成的作业调度问题。把这个问题形式化描述为: ①要在一台机器上处理n个作业,每个作业可以在单位时间内完成 ②每个作业i都有一个…
算法--查找--差值查找
老实说,差值查找与二分查找在实现上基本没什么区别。 相对于二分查找来说,查值查找更在乎数据的分布规律,换句话说,查值查找会根据数据的分布情况,来决定要选择的拆分点middle,从而实现优化。比如现在一个长度为100,分别…
二分查找法与链表算法
1:二分查找法 public class Test { public static void main(String[] args) { int []a ={1,2,5,7,8,12,14}; System.out.pr…
LeetCode | Word Break
题目: Given a string s and a dictionary of words dict, determine if s can be segmented …
数据结构与算法-二叉查找树
二叉树基本概念 二叉查找树的实现,包括查找元素、查找最大最小值、插入元素、删除元素、清空二叉树等操作。 二叉查找树的平均深度是O(log N),因此查找的平均时间复杂度也是O(log N),但是当二叉查找树不平衡时比如退…