多线程

82 阅读2分钟

对象初始化与this

(zhuanlan.zhihu.com/p/35681398)

静态方法、非静态方法、静态字段、非静态字段的存储:

(www.cnblogs.com/dongguol/p/…)

  • class field:有用static修饰的field
  • class method:有用static修饰的method
  • instance field:没有用static修饰的field
  • instance method:没有用static修饰的method

那么他们在内存中的表示为:

  • class field:共用一块记忆体
  • class method:共用一块记忆体
  • instance field:随着每个instance各有一块记忆体
  • instance method:共用一块记忆体

多线程

多线程初级(上)

zhuanlan.zhihu.com/p/56518031)

  • 创建多线程的2种方式;

    extends Thread类

    implments Runnable()

  • Thread源码浅析;

    继承Thread 与 实现Runnable 之间的关系。(实现Runnable接口,将此runnable对象传递给Thread的构造方法。Thread类内部会调用该runnable中的run方法。)

初级多线程(中)

zhuanlan.zhihu.com/p/57482990)

锁的认识

  • 互斥的最基本条件是:共用同一把锁

  • 静态方法的锁是所在类的字节码对象:xxx.class对象,普通方法的锁是this对象

  • 针对同一个线程,synchronized锁是可重入的

面试题:写一个固定容量的同步容器,拥有put和get方法,以及getCount方法,能够支持2个生产者线程以及10个消费者线程的阻塞调用。

Volatile解析

zhuanlan.zhihu.com/p/54327635)

面试官最爱的volatile关键字(juejin.cn/post/684490…

原子性、可见性、有序性

指令重排序

blog.csdn.net/pzxwhc/arti…

ReetrantLock手撕AQS

(zhuanlan.zhihu.com/p/54297968)

基本锁的特性:

  • 加锁
  • 解锁

ReetrantLock的补充特性

  • 可重入
  • 公平
  • 非公平

Java线程池

(zhuanlan.zhihu.com/p/34043299)

注解

(zhuanlan.zhihu.com/p/60941426)

(zhuanlan.zhihu.com/p/60966151)

注解的三角关系:

定义注解,使用注解,读取注解

preview

注解分为3类:

  1. 自定义注解

  2. JDK内置注解

  3. 第三方注解

自定义注解一般要我们自己定义、使用、并写程序读取,而JDK内置注解和第三方注解我们只要使用,定义和读取都交给它们。

元注解

元注解:就是加在注解上的注解

@Target 加在注解上,限定该注解的使用位置。

@Retention(注解的保留策略)

保留策略有3种:SOURCE/CLASS/RUNTIME

img

要想被反射读取,保留策略只能用RUNTIME,即运行时仍可读取。