自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

转载 JUC多线程与高并发面试题——死锁编码及定位分析

一、什么是死锁 死锁指的是,两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力干涉,那它们都将无法继续推进下去,如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 二、死锁Demo...

2019-09-06 21:03:00 270

转载 JUC多线程与高并发面试题——线程池生产环境参数配置

一、线程池的拒绝策略 1.1 线程池的拒绝策略是什么 等待队列也已经满了,再也塞不下新任务了。同时线程池中的max线程数也达到了,无法继续为新任务服务。这时候我们就需要拒绝策略机制合理的解决这个问题。 1.2 JDK内置的拒绝策略 1.2.1 AbortPolicy ...

2019-09-06 20:49:00 303

转载 JUC多线程与高并发面试题——线程池一

一、为什么用线程池?线程池的优势? 线程池做的主要工作是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超出了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。 它的主要特点是:线程复用;控制最大并发...

2019-09-06 16:05:00 266

转载 JUC多线程与高并发面试题——阻塞队列

一、队列+阻塞队列 阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下所示: 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞 试图从空的阻塞队列中获取元素的线程将会被阻塞...

2019-09-06 13:24:00 249

转载 JUC多线程与高并发面试题——CountDownLatch/CyclicBarrier/Semaphore

一、CountDownLatch 1.1 CountDownLatch介绍 CountDownLatch让一些线程阻塞,直到另一些线程完成一系列操作后才被唤醒。 CountDownLatch主要有两个方法:当一个或多个线程调用await()方法时,调用线程会被阻塞。其...

2019-09-05 20:31:00 320

转载 JUC多线程与高并发面试题——公平锁/非公平锁/重入锁/递归锁/自旋锁

一、公平锁和非公平锁 1.1 公平锁和非公平锁分别是什么 公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。 非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。在高并发的情况下,有可能会造成优先级...

2019-09-04 20:10:00 372

转载 JUC多线程与高并发面试题——ArrayList线程不安全

一、ArrayList线程不安全演示 package com.yuxx.juc;import java.util.ArrayList;import java.util.List;public class ListNotSafeDemo { public sta...

2019-09-02 22:09:00 413

转载 JUC多线程与高并发面试题——ABA问题与原子引用

一、ABA问题怎么产生的 CAS会导致“ABA问题”。 CAS算法实现的一个重要前提是:需要取出内存中某时刻的数据,并在当下时刻比较并替换。那么在这个时间差会导致数据的变化。 比如:一个线程ONE从内存位置V中取出A,这时候线程TWO也从内存中取出A,并且线程T...

2019-09-02 20:32:00 509

转载 JUC多线程与高并发面试题——CAS算法

一、CAS是什么 比较并交换(CompareAndSwap)。 JDK1.5之前,Java语言靠synchronized关键字保证同步,是一种独占锁,也是悲观锁。JDK1.5 增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于s...

2019-09-02 17:55:00 210

转载 JUC多线程与高并发面试题——volatile

一、volatile是什么? volatile是Java虚拟机提供的轻量级的同步机制。 二、volatile的三个特性? 保证可见性 不保证原子性 禁止指令重排 三、JMM与volatile 3.1 JMM介绍 JMM(Java内存模型Ja...

2019-09-02 15:55:00 148

转载 JUC多线程与高并发面试题学习总结目录

volatile CAS ABA问题及原子引用 ArrayList线程不安全的案例 公平锁/非公平锁/重入锁/递归锁/自旋锁 CountDownLatch/CyclicBarrier/Semaphore 阻塞队列 线程池——ThreadPoolExecutor...

2019-09-02 15:52:00 1187

转载 AtomicReference的compareAndSet更新问题

最近在学习AtomicInteger可能导致的ABA问题以及解决办法。 当学习到原子引用时,遇到了一个问题。不多说,开始: 一、问题代码 DEMO-1: public class ABADemo { static AtomicReference<Integer>...

2019-08-12 14:04:00 2316

转载 IDEA添加字节码指令

一、IDEA添加字节码指令 IDEA中点击“Ctrl+Alt+S”快捷键,调出IDEA设置窗口。然后打开Tool下的External Tools,如图 2.依次输入内容,Name和Descrition可自己设置, Program输入:点击框里的文件夹图标,去选择j...

2019-08-07 11:12:00 462

转载 Java字节码指令集

常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈。 ...

2019-08-07 11:10:00 100

转载 JUC入门系列(十二)-ForkJonPool 分支/合并框架 工作窃取

一、Fork/Join框架 Fork/Join框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不可再拆时),再讲一个个的小任务运算的结果进行join汇总。 二、Fork/Join框架与线程池的区别 采用“工作窃取”模式(work-steeli...

2019-08-05 14:46:00 108

转载 JUC入门系列(十一)-线程池

一、线程池 第四种获取线程的方法:线程池,一个ExecutorService,它使用可能的几个线程池之一执行每个提交的任务,通常使用Executors 工厂方法配置。 线程池可以解决两个问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提...

2019-08-05 13:33:00 101

转载 JUC入门系列(十)-ReadWriteLock读写锁

一、读写锁ReadWriteLock ReadWriteLock 维护了一堆相关的锁,一个用于只读操作,另一个用于写入操作。只要没有writer,读取锁可以由多个reader线程同时保持。写入锁是独占的。 ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,...

2019-08-05 12:14:00 90

转载 JUC入门系列(九)-线程按序交替

一、题目 编写一个程序,开启3个线程,这三个现成的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出的结果必须按顺序显示,如:ABCABCABC...... 二、实现 package com.yuxx.juc;import java.util.conc...

2019-08-05 12:00:00 81

转载 JUC入门系列(八)-Condition控制线程通信

一、Condition Condition接口描述了可能会与锁有关的条件变量。这些变量在用法上与使用 Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个 Lock 可能与多个 Condition 对象关联。 在Condition对象中,与wa...

2019-08-05 11:51:00 104

转载 JUC入门系列(七)-Lock同步锁

一、显示锁 Lock 在Java 5.0之前,协调共享对象的访问时可以使用的机制只有 synchronized 和 volatile 。Java 5.0 后增加了一些新的机制,但并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。 ReetrantLock ...

2019-08-05 10:26:00 127

转载 JUC入门系列(六)-Callable接口

一、Callable接口 Java 5.0 在 java.util.concurrent 包中提供了一个新的创建执行线程的方式:Callable接口 Callable接口类似于Runnable,两者都是为那些其实例可能被另一线程执行的类设计的。但是Runnable不会返回结果,并且...

2019-08-02 16:12:00 107

转载 JUC入门系列(五)-CountDownLatch

一、CountDownLatch Java 5.0 在 java.util.cocurrent 包中提供了多种并发容器类来改进同步容器的性能。 CountDownLatch 是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线...

2019-08-02 15:56:00 133

转载 JUC入门系列(四)-ConcurrentHashMap 锁分段机制

一、JUC简介 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常见的实用工具类,用于定义类似于编程的自定义子系统,包括线程池、异步IO和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文的Collec...

2019-08-02 14:05:00 132

转载 JUC入门系列(三)-原子变量

一、JUC简介 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常见的实用工具类,用于定义类似于编程的自定义子系统,包括线程池、异步IO和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文的Collec...

2019-08-01 17:43:00 146

转载 JUC入门系列(二)-CAS算法

一、JUC简介 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常见的实用工具类,用于定义类似于编程的自定义子系统,包括线程池、异步IO和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文的Collec...

2019-08-01 16:20:00 100

转载 JUC入门系列(一)-volatile关键字

一、JUC简介 Java 5.0 提供了java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常见的实用工具类,用于定义类似于编程的自定义子系统,包括线程池、异步IO和轻量级任务框架。提供可调的、灵活的线程池。还提供了设计用于多线程上下文的Collec...

2019-08-01 13:51:00 90

转载 面试题

JAVA基础 JAVA中的几种基本数据类型是什么,各自占用多少字节。 String类能被继承吗,为什么。 String,Stringbuffer,StringBuilder的区别。 ArrayList和LinkedList有什么区别。 讲讲类的实例化顺序,比如父类静态数据,构造函数,字段...

2019-06-15 10:24:00 106

转载 技术博客地址列表

周立的博客 SpringCloud微服务架构实践作者的博客 纯洁的微笑 SpringBoot、SpringCloud相关学习 尚硅谷Java视频教程_Java面试题第一季 尚硅谷周阳互联网大厂高频重点面试题(第2季) 剑指Java面试-Offer直通车 面向未来微服务:S...

2019-05-28 13:47:00 83

转载 SVN合并代码提示revert (without reverting children)

切换到控制台窗口,进入到项目的顶级目录下,输入如下指令 svn revert . --depth infinity 其中,“.”表示当前目录。 转载于:https://my.oschina...

2019-03-09 20:36:00 933

转载 多线程基础学习(四)——线程优先级

每个线程都有一个优先级。 默认情况下,一个线程继承父线程的优先级。 setPriority方法提高或降低任何一个线程的优先级,将线程优先级设置在MIN_PRIORITY(1)与MAX_PRIORITY(10)之间的任何值。NORM_PRIORITY是5。 ...

2019-02-13 19:48:00 213

转载 多线程基础学习(五)——控制线程

一、join线程 Thread提供的join()方法,可以让一个线程等待另一个线程完成。当在某个程序执行流中调用其他线程的join方法时,调用线程被阻塞,知道被join()方法加入的线程执行完毕。 join()方法通常由使用线程的程序调用,以将大问题划分为许多小问题,每个...

2019-02-13 19:23:00 64

转载 多线程基础学习(三)——线程的生命周期

线程的生命周期中经历的5种状态: 新建(New) 就绪(Runnable) 运行(Running) 阻塞(Blocked) 死亡(Dead) 一、新建和就绪状态 当程序使用new关键字创建一个线程后,该线程进入新建状态。此时的线程对象没有任何线...

2019-02-12 19:41:00 62

转载 多线程基础学习(二)——中断线程

一般,线程会在两种情况终止:一是run方法的方法体中最后一条语句执行完,或者出现了在方法中没有捕获的异常。 第三种情况,就是强制使线程在正常终止前停止执行。 Thread类有个interrupt方法,当对一个线程调用这个方法时,线程的中断状态被置位...

2019-02-12 16:33:00 86

转载 多线程基础学习(一)——线程概念和创建多线程的方式

一、线程和进程 进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。 线程:通常在一个进程中可以包含若干个线程,至少会有一个。线程可以利用进程所拥有的资源,是独立运...

2019-02-01 16:49:00 102

转载 IDEA搭建SpringBoot项目

1.New-Project... 2.选择Spring Initializr,选择Next 3.配置SpringBoot构建信息 4.按需选择引入的依赖 5.配置项目路径 6.打开项目后,会提示你引入依赖。 OK. ...

2019-01-08 18:06:00 80

转载 Arrays.asList注意事项

一般我们把Arrays.asList用来把数组转成集合。但是同事使用时遇到一个问题,他用这个方法将数组转成集合,然后想要通过remove方法移除掉这个集合中的一个元素。然后就报错了。 下面是简单的示例: public class MyTest { @Test pub...

2018-12-26 12:56:00 112

转载 SQL/ Developer设置快捷输入

(感谢我的组长!) 输入模板的快捷代码后,按空格或回车键,模板对应的内容就自动打印出来了。 模板样例: sl=SELECT up=UPDATE del=DELETE fu=FOR UPDATE ct=COUNT(*) wh=WHERE lj=LEFT JOIN rj=LEFT JO...

2018-12-20 11:09:00 239

转载 Spring事务相关概念

一、事务 多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功。 二、必须遵循的四个特性(原则:ACID) 原子性(Atomicity):事务是不可拆分的最小工作单元,事务内的操作,要么全做,要么全不做。 一致性(Consistency):事务...

2018-12-15 17:39:00 66

转载 IDEA进行Springboot项目打包

项目框架:SpringBoot+SpringCloud 打包开始: File->Project Structure,或IDEA窗口右上角的Project Structure 图标: 弹出的Project Structure窗口中,点击中间栏目的+号: 选择JAR->F...

2018-12-15 10:47:00 242

转载 Spring面试题

一、Spring常用注解 @Configuration 把一个类作为一个IoC容器,它的某个方法头上如果注册了@Bean,就会作为这个Spring容器中的Bean @Scope 注册 作用域 @Lazy(true) 表示延迟初始化 @Service 用...

2018-08-13 19:10:00 60

空空如也

空空如也

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

TA关注的人

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