java
写代码的小森森
上若善水
展开
-
java Lambda表达式入门
原文链接: Start Using Java Lambda Expressions下载示例程序 Examples.zip 。原文日期: 2014年4月16日翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议转载 2017-07-06 15:34:36 · 378 阅读 · 0 评论 -
线程池基础,工作原理与参数设置
线程池的工作主要是控制运行的线程的数量,处理过程中将任务放进队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等待其他线程执行完毕,在从队列中取出任务来执行。主要特点为:线程复用,控制最大并发数,管理线程。线程池...原创 2019-06-25 09:50:50 · 1096 阅读 · 0 评论 -
Integer用==比较时127相等128不相等的原因
for (int i = 0; i < 150; i++) { Integer a = i; Integer b = i; System.out.println(i + " " + (a == b));}部分结果如下:124 true125 true126 true127 true128 false129 false130 false131...转载 2019-06-17 13:51:22 · 1558 阅读 · 1 评论 -
阻塞队列理论以及使用
在多线程领域,所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦满足条件,被挂起的线程又会自动被唤醒。为什么需要BlockingQueue?好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQueue已经做好阻塞的控制。1.队列类型黄色标记的是重点!!!ArrayBlockingQueue:由数组结构组成的有界阻塞队列。inkedBlocki...原创 2019-04-23 16:04:45 · 682 阅读 · 0 评论 -
什么是公平锁,非公平锁,递归锁,独占锁(写锁),共享锁(读锁),自旋锁?
1.公平锁,非公平锁公平锁:就是很公平,在并发环境中,每个线程在获取时会先查看此锁维护的队列,如果为空,或者当前线程是等待队列的第一个就占有锁,否则就会加入到队列中,以后会按照FIFO的规则从队列中取到自己。非公平锁:非公平锁比较粗鲁,上来就直接尝试占有锁,如果尝试失败,就再采用类似公平锁那种方式。// 非公平锁Lock lock = new ReentrantLock(); /...原创 2019-04-22 12:08:49 · 2037 阅读 · 0 评论 -
线程不安全之Set
面试题:HashSet线程不安全,为什么不安全?CopyOnWriteArraySet为什么安全?HashSet线程不安全,不安全的原因是因为HashMap不是线程安全的。在HashSet中,底层源码,其实就是一个HashMap,为HashMap的key为HashSet中的值,而value为一个Object对象常量。public class HashSet<E> extends A...原创 2019-04-21 19:08:56 · 785 阅读 · 0 评论 -
List线程不安全问题和写时复制(CopyOnWrite)
面试题:ArrayLIst线程不安全,请编写一个线程不安全的案例,并给出解决方案public class ListDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); /** * 1. 故障...原创 2019-04-21 18:55:12 · 904 阅读 · 0 评论 -
CAS与Unsafe讲解
1. 什么是CASCAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的并发原语,其作用是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS并发原语体现在java语言中就是sun.misc.Unsafe类中的各种方法。调用Unsafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能,通过它实现了原子操...原创 2019-04-21 00:52:51 · 771 阅读 · 0 评论 -
volatile关键字和JMM
1.volatile关键字volatile关键字的java提供的轻量级同步机制保证可见性不保证原子性禁止指令重排2. JMM(java内存模型 Java Memory Model)JMM本身是一种抽象的概念,并不真实存在。它描述的是一组规则或规范。通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象)的访问方式。JMM关于同步的规定线程解锁前,必须...原创 2019-04-20 17:46:07 · 379 阅读 · 0 评论 -
JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不...转载 2018-09-20 10:40:53 · 248 阅读 · 0 评论 -
死锁编码以及定位分析
1. 什么是死锁死锁是指两个或两个以上的进程在执行过程中,因为争夺资源而造成一种相互等待的现象。若无外力干涉那他们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。死锁代码:public class ThreadPoolTest2 implements Runnable { private String lo...原创 2019-06-25 11:27:24 · 391 阅读 · 0 评论