- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 Java并发编程_线程池
1. 线程池的状态线程的五种状态:新建,就绪,运行,阻塞,死亡线程池的五种状态:RUNNING, SHUTDOWN, STOP, TIDYING, TERMINATED。 private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0)); private static final int COUNT_BITS...
2019-07-31 17:20:52 153
原创 Java并发编程_并发集合
Java并发集合框架非阻塞式集合:这类集合包括添加和移除的方法,如果方法不能立即被执行,则返回null或抛出异常,但是调用这个方法的线程不会被阻塞。阻塞式集合:这类集合也包括添加和移除的数据方法。当集合已满或为空时,被调用的添加或者移除方法就不能立即被执行,那么调用这个方法的线程将被阻塞,一直到该方法可以被成功执行。1. 非阻塞集合1.1 ConcurrentLinkedQueue一个...
2019-07-31 15:05:24 227
原创 Java并发编程_AQS(AbstractQueuedSynchronizer)应用
1. 自定义锁AQS子类定义为非公共内部帮助器类(私有的内部类继承AQS),写锁的时候的一个帮助器,提供获取锁和是释放锁的功能模板package com.lic.AQS;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java...
2019-07-30 15:58:29 138
原创 Java并发编程_AQS(AbstractQueuedSynchronizer)详解
1. AQS简介AQS,AbstractQueuedSynchronizer,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件。AQS解决了实现同步器时涉及当的大量细节问题,例如获取...
2019-07-30 15:17:06 378
转载 Java基础_再解Java中的String
原文出自:http://cmsblogs.com/?p=863今天朋友问我String的内容是真的不可变吗?我肯定告诉他是的?因为在我的主观意识里String就是一个不可变的对象。于是他给我发了这段程序:public class StringTest { public static void main(String[] args) throws Exception { ...
2019-07-30 13:31:20 92
原创 Java并发编程_深入分析CAS在原子类中应用
1. 什么是CAS?CAS (compareAndSwap),中文叫比较交换,一种无锁原子算法。过程是这样:它包含 3 个参数 CAS(V,E,N),V表示要更新变量的值,E表示预期值,N表示新值。仅当 V值等于E值时,才会将V的值设为N,如果V值和E值不同,则说明已经有其他线程做两个更新,则当前线程则什么都不做。最后,CAS 返回当前V的真实值。CAS 操作时抱着乐观的态度进行的,它总是认为...
2019-07-30 11:56:52 225
原创 JVM系列_从JVM角度分析finally块中程序到底在return之前执行还是return之后执行
对于finally的作用相关内容不再陈述,网上有很多本博文着重分析finally块中程序到底在return之前执行还是return之后执行?没有了解过JVM指令的可以看这篇博客:JVM操作指令集解析先看一个程序示例:public class AtomicDemo{ public static int test(int i){ try { i=9; return i; ...
2019-07-29 16:18:07 344
原创 Java并发编程_Synchronized底层原理
一、概念是利用锁的机制来实现同步的。锁机制有如下两种特性:互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能...
2019-07-26 14:55:03 265
原创 JVM系列_Java内存模型(JMM)
Java内存模型1. 基本概念:程序:代码,完成某一件任务,代码序列(静态的概念)进程:程序在某些数据上的一次运行(动态的概念)线程:一个进程可能包含一个或多个线程(占有资源的独立单元)2. JVM与线程 (线程在JVM中)JVM什么时候启动?在运行程序的时候启动 JVM线程 --> 其他的线程(main)JVM 什么时候关闭? 当该程序关闭退出,这个虚拟机实例也就随之...
2019-07-25 10:08:19 184
原创 JVM系列_JVM操作指令集解析
1. 先写一个简单的程序并且运行:package com.lic.hashMap;public class Math { public int compute() { int a = 8; int b = 9; int c = (a + b) * 10; return c; } public static void main(String[] args) { M...
2019-07-22 10:06:10 681 1
原创 Java并发编程_volatile可见性底层实现原理
JMM(java memory model)java内存模型主要目标是定义程序中的变量,(此处所指的变量是实例字段、静态字段等,不包含局部变量和函数参数,因为这两种是线程私有无法共享)在虚拟机中存储到内存与从内存读取出来的规则细节,Java 内存模型规定所有变量都存储在主内存中,每条线程还有自己的工作内存,工作内存保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须...
2019-07-21 17:14:45 270
spring4.2.4源码
2019-04-14
hadoop-2.8.1-win-x64-bin(winutils)
2018-08-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人