线程基础知识08 线程的等待和唤醒
摘要:1 简介 目前,JAVA提供了三种线程等待唤醒的机制。 1)synchronized + Object的wait()和notify()方法 2)Lock的lock()方法和unlock()方法+await()和signal()方法 3)LockSupport的park()和unpark()方法 2
阅读全文
线程基础知识07 线程中断机制
摘要:1 简介 一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume方法 都已经被废弃了。 在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了
阅读全文
线程基础知识06 synchronized---使用javap查看相关指令
摘要:1 示例-简单同步代码块 public class SychTest9 { public static void main(String[] args) { Object o = new Object(); synchronized (o){ System.out.println("aaa"); }
阅读全文
线程基础知识05 synchronized类锁和对象锁演示
摘要:1 简介 synchronized在方法内,同步代码块,传入对象,使用的是对象锁,传入class对象,使用的是类锁 作用于普通方法,也是对象锁,当前对象 作用于静态方法,是类锁 2 同步方法示例 2.1两个synchronized 修饰的普通方法 public class SychTest1 { <
阅读全文
idea插件Jclasslib---查看字节码指令
摘要:1 简介 学习一个jvm的知识的时候总要去研究一些字节码指令,但是每一次都把class文件打开到jclasslib里面很是麻烦,后来google发现有人已经写好了这个插件Jclasslib。我们通过Jclasslib可以查看类的字节码指令 2 安装 File => Settings => Plugi
阅读全文
线程基础知识02-CompletableFuture
摘要:1 简介 Futrue可以监视目标线程调用call的情况,当你调用Future的get()方法以获得结果时,调用方的线程就被阻塞,直到目标线程的call方法结束并返回结果。 线程的实现方式有几种方式,继承Thread类,实现Runnable接口,线程池,callable这种方式。 callable和
阅读全文
JAVA基础知识-String.format
摘要:转https://blog.csdn.net/anita9999/article/details/82346552 1 简介 String提供了format方法帮助我们对一个或者多个字符串进行格式化 2 先来个例子看看效果 public static void main(String[] args)
阅读全文
IDEA插件:lombok
摘要:1 安装插件lombok File => Settings => Plugins => Marketplace。在 Marketplace 中搜索 lombok 并安装,安装成功后 lombok 会显示在 installed 标签下 2引入依赖 <dependency> <groupId>org.p
阅读全文
线程基础知识01-几个概念
摘要:1 进程、线程、管程 1.1 进程 我们在电脑上打开微信就开启了一个进程,打开一个腾讯视频又是一个进程。 1.2 线程 一个进程中可以有一个和多个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存,从而极大地提高了程序的运行效率。多个线程执行进程中的不同的任务。 比如qq,我发送文件
阅读全文
spring源码写注释
摘要:转:https://blog.csdn.net/z_c8819/article/details/105258015 1.从GitHub上下载spring项目 https://github.com/spring-projects/spring-framework 当然也可以使用git进行下载: git
阅读全文
IDEA翻译插件translate
摘要:1、打开File->Setting 2、plugins->Browse repositories 3、输入“translate”,选择排序“Downloads” 4、在排行榜上部的“Translation”,点击“install”,等安装之后选择重启IDEA即可 5、使用,上部的翻译按钮为使用翻译功
阅读全文
线程基础知识 03 synchronized锁(对象在内存的布局和加上锁后对象在内存中的变化)
摘要:1 线程不安全演示 public class ThreadAndLockTest1 { private static int a = 0; public static void main(String[] args) throws InterruptedException { CountDownLa
阅读全文
线程基础知识 04 synchronized锁的四种状态和升级
摘要:转https://www.cnblogs.com/mingyueyy/p/13054296.html 1 轻量级锁和重量级锁简要说明 线程调度本来是由操作系统来管理的。现在,操作系统上跑了一个虚拟机JVM,JVM可以启动JVM级别的线程,实际上还是落实到操作系统级别的线程。 JVM自己能够搞定的锁叫
阅读全文
工具-使用org.openjdk.jol查看对象在内存中的布局
摘要:1 添加依赖 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency> 2 查看对象的内存布局 public class
阅读全文
线程基础知识09-JAVA的可见性和有序性问题
摘要:1 CPU中的三级缓存及可见性问题 1.1 简介 1.2 缓存行Cacheline 1.3 可见性问题-缓存一致性协议 2 JAVA中的有序性问题 2.1 指令重排简介 2.2 as-if-serial语义 2.2.1 数据依赖 2.2.2 控制依赖 2.3 指令重排示例 2.3.1 代码 2.3.
阅读全文
@Configuration
摘要:1.源码 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface Configuration { @AliasFor(annotation = Com
阅读全文
线程基础知识-CountDownLatch
摘要:转:https://blog.csdn.net/hbtj_1216/article/details/109655995 1 概念1.1 简介 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经
阅读全文
ThreadLocal
摘要:1 简介 ThreadLocal提供了线程内存储变量的能力。 2 ThreadLocal的应用场景 如下图,方法1调用方法2,方法2调用方法3,方法3调用方法4 如果我们想要在方法4中使用方法1中的一个变量sa,可以怎么做? 1)通过参数传递 在某些情况下可以,但是如果中间某个方法(如method2
阅读全文
JAVA引用类型
摘要:1.简介 在JDK1.2之后,Java对引用的概念做了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)四种,这四种引用的强度依次递减。 1)强引用(StrongRe
阅读全文
Spring02---IOC-Debug查看Bean的实例化过程
摘要:1 简介 springIOC它是对bean进行管理。 我们通常可以通过xml、properties、yml、注解等来配置bean的信息 spring读取这些配置信息,解析,生成BeanDefinition(用来存储Bean的定义信息) 根据beanDefinition来创建对象,设置属性....,最
阅读全文
Spring03-IOC-循环依赖的实现(Debug查看spring解决循环依赖的过程)
摘要:1 什么是循环依赖 如下,有类A和B,A中有一个类型为B的属性b,B中有一个类型为A的属性a,A和B相互依赖 public class A { private B b; public B getB() { return b; } public void setB(B b) { this.b = b;
阅读全文
Spring04-AOP(Debug查看执行流程)
摘要:1 AOP的几个核心技术 AOP-面向切面编程的实现的核心技术:jvm运行期间对字节码进行修改或者动态生成新的字节码文件(asm技术)。 2 AOP的几个核心概念 AOP在运行期间我们要对class文件做修改或者生成新的。AOP就定义了一套规范,包括了切面、切点、连接点、通知、织入等等这些内容。 (
阅读全文