自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (2)
  • 收藏
  • 关注

原创 日常记录——leetcode- 按序打印

题目:我们提供了一个类: public class Foo { public void one() { print(“one”); } public void two() { print(“two”); } public void three() { print(“three”); } } 三个不同的线程将会共用一个 Foo 实例。 线程 A 将会调用 one() 方法 线程 B 将会调用 two() 方法 线程 C 将会调用 three() 方法 请设计修改程序,以确保 two() 方法在 one() 方

2020-06-30 23:57:22 252 1

原创 日常记录——leetcode- 两数之和

题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 代码: public static int[] twoSum(int[] nums, int target) { i

2020-06-30 00:07:01 124

原创 日常记录——多线程与高并发—CAS概念、原理、问题、CAS和synchronized比较

一、概念 CAS:Compare and Swap(比较并且替换),jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。jdk 11 后改为 weak Compare and Set(比较并设定,weak应该是标记为弱引用,用作GC),cas操作为cpu原语支持,不需要担心在cas过程中产生线程竞争问题。 二、原理

2020-06-28 23:36:50 386

原创 日常记录——多线程与高并发—volatile概念、功能、原理、举例、volatile与synchronized的区别

一、概念 volatile是一个特征修饰符(type specifier).volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。 二、功能 1.保证数据可见性 2.禁止指令重排序 注意:不保证原子性 例如:修饰变量的++操作。 三.原理 1.保证数据可见性:依靠MESI(cpu的高速缓存协议),在java内存中,分为主内存和线程内存,主内存中记录变量的值,线程内存在获取变量的值时,先将值copy到自己的内存,执行本线程内操作后,再将变量值写回到主内存。线程之间的

2020-06-28 00:13:12 206

原创 日常记录——多线程与高并发—synchronized概念、原理、锁升级、用法、特性、注意、优化

一、概念 Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍可以访问该object中的非加锁代码块。 二、原理 首先要明白,锁锁住的是什么:是对象,那怎么知道一个对象是否被锁住了呢,那就要从对象说起。在

2020-06-27 00:09:14 1563

原创 日常记录——多线程与高并发—线程状态、方法以及对象的锁池、等待池

一.Java中的线程的生命周期 线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:创建(NEW)、就绪(RUNNABLE)、运行(RUNNING)、阻塞(BLOCKED)、结束(DEAD)。 具体展现为: 1.创建(NEW):新创建了一个线程对象,并没有调用start()方法之前。 2.就绪(RUNNABLE):当start()方法调用后,线程有资格运行,但还未获取到cpu资源时。线程首先进入.就绪状态。在线程运行之后从阻塞状态回来后,也返回到就绪状态。、 3. 运行(RUNNING):就绪状态线

2020-06-26 00:35:07 258

原创 日常记录——多线程与高并发—线程概念以及创建线程的五种方式

概念 进程:一个程序的运行资源。 线程:进程里面最小的资源执行单元,即一个程序里不同的执行单元。 纤程/协程:更牛逼的东西,轻量级线程,一个线程可以创建任意多个纤程。 线程的创建方式 1.继承Thread类 创建一个类继承Thread类,重写run()方法,调用创建对象的start()方法,该start()方法表示先开启线程。 public class Thread { public static void main(String[] args) {

2020-06-25 00:49:14 160

common.zip

基于springboot的方法耗时自定义注解和切面,使用时将注解@costlogger注解到相应方法上,使用日志输出方法耗时。

2020-09-10

ideaworker.zip

博主的多线程文章的测试类-线程创建以及线程控制器 内含创建线程、synchronized、ReentrantLock、ReadWriteLock、CAS、四种引用、并发控制器、volatile

2020-07-08

空空如也

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

TA关注的人

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