自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一日看尽长安花

学习的路还很长,余生慢慢总结

  • 博客(20)
  • 收藏
  • 关注

原创 大白话说IO

鸟瞰 IO志坚者,功名之柱也。登山不以艰险而止,则必臻乎峻岭。1. 同步与异步同步请求       方法 A 调用方法 B ,如果方法 B 的处理是同步的,那么在方法 B 处理完之前他不会通知方法 A 的,只有方法 B 处理完之后才会明确的通知方法 A。异步请求       方法 A 调用 方法 B ,方法 B 的处理是异步的,那么方法 B 在接到请求后

2022-02-10 09:27:20 335

原创 并发条件队列之Condition 精讲

1. 条件队列的意义       Condition将Object监控器方法( wait , notify和notifyAll )分解为不同的对象,从而通过与任意Lock实现结合使用,从而使每个对象具有多个等待集。 Lock替换了synchronized方法和语句的使用,而Condition替换了Object监视器方法的使用。       条件(也称为条件队列或条件

2021-01-27 10:35:41 926 1

原创 AQS之ReentrantReadWriteLock写锁

用法1.1 定义一个安全的list集合public class LockDemo {ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合// 定义读锁ReentrantReadWriteLock.ReadLock readLock = new ReentrantReadWriteLock(true).readLock();// 定义写锁ReentrantReadWriteLock.WriteLoc.

2021-01-22 16:31:51 183

原创 AQS之ReentrantReadWriteLock精讲分析上篇

1.用法1.1 定义一个安全的list集合public class LockDemo { ArrayList<Integer> arrayList = new ArrayList<>();//定义一个集合 // 定义读锁 ReentrantReadWriteLock.ReadLock readLock = new ReentrantReadWriteLock(true).readLock(); // 定义写锁 ReentrantReadWr

2021-01-20 14:04:38 171

原创 一文带你学会AQS和并发工具类的关系2

1.创建公平锁1.使用方式Lock reentrantLock = new ReentrantLock(true);reentrantLock.lock(); //加锁try{ // todo} finally{ reentrantLock.unlock(); // 释放锁}2.创建公平锁在new ReentrantLock(true)的时候加入关键字truepublic ReentrantLock(boolean fair) { sync = fair ? new Fa

2021-01-18 17:33:42 97 2

原创 一文带你学会AQS和并发工具类的关系

1. 存在的意义AQS(AbstractQueuedSynchronizer)是JAVA中众多锁以及并发工具的基础,其底层采用乐观锁,大量使用了CAS操作, 并且在冲突时,采用自旋方式重试,以实现轻量级和高效地获取锁。提供一个框架,用于实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关的同步器(semaphore等)。 此类旨在为大多数依赖单个原子int值表示状态的同步器提供有用的基础。 子类必须定义更改此状态的受保护方法,并定义该状态对于获取或释放此对象而言意味着什么。 鉴于这些,此类中的其他方法将

2021-01-15 16:23:26 115

原创 Lock锁 精讲

1.为什么需要Lock为什么synchronized不够用,还需要Lock       Lock和synchronized这两个最常见的锁都可以达到线程安全的目的,但是功能上有很大不同。       Lock并不是用来代替synchronized的而是当使用synchronized不满足情况或者不合适的时候来提供高级功能的为什么synchronized不够

2021-01-12 18:07:37 622

原创 Synchronized 精讲

1.简介1.1 作用在并发场景中,保证同一时刻只有一个线程对有并发隐患的代码进行操作1.2 错误案例需求:两个线程对 count 变量进行200000次循环增加,预期结果是400000次public class SynchronizedDemo implements Runnable { private static int count = 0; static SynchronizedDemo synchronizedInstance = new SynchronizedDemo

2021-01-11 21:14:46 167 6

原创 volatile 关键字精讲

1.错误案例       通过一个案例引出volatile关键字,例如以下代码示例 : 此时没有加volatile关键字两个线程间的通讯就会有问题public class ThreadsShare { private static boolean runFlag = false; // 此处没有加 volatile public static void main(String[] args) throws Interrupt

2021-01-08 09:56:42 630 3

原创 Java内存模型精讲

1.JAVA 的并发模型共享内存模型       在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信       该内存指的是主内存,实际上是物理内存的一小部分2.JAVA 内存模型的抽象2.1 java内存中哪些数据是线程安全的,哪些是非安全的非线程安全 : 在 java 中所有的实例域、静态域、和数组元素

2021-01-06 15:48:25 133

原创 redis 中 Set Hash Zset 是怎么操作的?

   往set中加入一个zhangsan127.0.0.1:16379[3]> sadd set zhangsan(integer) 1   往set中加入一个zhangsan (返回结果:(integer) 0)被去重了127.0.0.1:16379[3]> sadd set zhangsan(integer) 0   获取 set 中的所有成员127.0.0.1:16379[3]> SMEMBERS set 1) "zhangsan"   往set集合中添

2020-07-27 17:59:18 130

原创 手摸手教你 linux 环境搭建 java、Tomcat、MySQL!!!

安装java、Tomcat、MySQL一、安装 Java0、上传jdk 到指定目录1、解压缩并移动到指定目录2、配置环境变量3、验证安装是否成功二、安装 Tomcat1、解压缩并移动到指定目录2、验证安装是否成功三、安装 MySQL1、安装2、启动 MySQL3、查看数据库密码:4、连接数据库5、关于 mysql 密码策略相关参数:6、注意!!!7、远程连接一、安装 Java0、上传jdk 到指定目录1、解压缩并移动到指定目录解压缩:tar -zxvf jdk-8u152-linux-x64.t

2020-06-05 17:59:40 295

原创 手摸手教你配置CentOS7以及配置Redis!!!

从零开始装CentOS以及配置Redis1、新建虚拟机2、稍后再选择你要安装得系统镜像3、选择linux 下得 CentOS 74、给你要安装的虚拟机进行起名字并且选择安装位置5、配置磁盘的大小6、完成7、配置系统的镜像和网络8、配置系统的镜像9、配置系统的网络10、此时可以开机了  安装系统11、选择语言,接下来一步一步的安装就好了 注意一下网络的设置就可以了,把有叹号的选项处理完就可以了,这里由于图太多就不显示了12、安装vim

2020-06-04 15:22:13 987

原创 Redis 中 List 是怎么操作的?

  选择索引为2的数据库127.0.0.1:16379[1]> select 2OK   获取当前2库的所有的key信息127.0.0.1:16379[2]> keys *(empty list or set)   往list中压入值 zhangsan 、lisi 、 wangwu127.0.0.1:16379[2]> LPUSH list zhangsan lisi wangwu(integer) 3   获取 list 中所有的值127.0.0.1:163

2020-05-29 17:33:29 417

原创 Redis只会set 、get会导致什么后果!!!

1、reids 是什么?远程字典调用2、redis能干什么?3、redis-benchmark 一个压力测试工具?图片: https://uploader.shimo.im/f/6AbqTmtVxTGORIaZ.pngredis-benchmark -h localhost -p 16379 -c 100 -n 10000100个并发 每个线程10000次请求====== SET ======10000 requests completed in 0.13 seconds // 每次1000

2020-05-22 20:41:27 879

原创 如何优雅的停止线程?

喔!线程可以这么停止?0、面试场景1、interrupt 停不了?2、interrupt + InterruptedException 能停止么?3、interrupt + throw new RuntimeException() 可以么?4、如何更优雅的停止线程呢?5、interrupt 、isInterrupted、interrupted 你们在干嘛?0、面试场景话说我真的信了,????面试官A:多线程有过了解么?程序员B:有了解面试官A:那线程是如何中断的呢?面试官A:有多少中中断方式

2020-05-15 16:09:34 373

原创 多线程那么多API该怎么用?

线程API应该怎么用1、setPriority 设置线程的优先级2、isDaemon、setDaemon 守护线程API3、线程中断4、isAlive 、join 、线程状态5、activeCount、getName 等简单的API1、setPriority 设置线程的优先级public final void setPriority(int newPriority)说明:setPriority :更改此线程的优先级。 首先调用这个线程的checkAccess方法,没有参数这可能会导致抛出

2020-05-12 22:00:45 276

原创 看完这篇文章你还敢说不知道多线程是什么?

A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.线程就是程序中执行的线程。java虚拟机允许一个应用有多个线程同时执行。Every thread has a priority. Threads with higher priority are e

2020-05-10 23:33:05 304

原创 写这么多年的java代码 , 类是如何加载的你真的知道么?

JVM类加载过程的实战测试1、常量值测试2、静态变量值测试3、创建对象测试4、创建对象数组数据测试5、创建基础类型的数组数据测试6、利用单例模式的例子进行模拟类加载的过程7、测试接口继承时初始化8、测试类继承时初始化一9、测试类继承时初始化二1、常量值测试class ClassLoaderTest { public static final String str = UUID.rando...

2020-05-02 19:38:10 187

原创 JVM 真的很难学么?不、只是你“不敢学”而已

JVM 真的很难学么?不、只是你“不敢学”而已       许多招聘的信息上面都说,要了解jvm、多线程什么的对于 java 程序员来说,这是工作好多年的程序员都不一定能掌握的东西,但是面试就会问啊,你不掌握咋整你说?为什么面试会问呢?       因...

2020-04-28 22:47:30 1450 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除