相关优化手段:
内联、常量折叠、公共表达式消除、自动装箱消除、
热度代码、逃逸分析、锁消除、栈上分配、标量替换
数组边界检查消除 ...
volatile变量:
每次使用都会回主内存刷值
每次赋值都会同步到主内存
不会被指令重排序优化
特性:
原子性 read load assign use store write synchronized(lock unlock)
可见性 volatile synchronized final
有序性volatile synchronized
先行发生原则:
1.程序次序规则 同线程
2.管理锁定规则 lock unlock
3.volatile变量规则 不受指令重排序干扰,真是时间上也先行
4.线程启动规则start()在线程其他动作之前
5.线程终止规则 其他动作及Thread.join()在Threa.isAlive()终止检测之前
6.线程中断规则interrupt()在Thread.interruted()之前
7.对象终结规则对象初始化完成先于它的finalize()方法
8.传递性A先于B,B先于C,那么A先于C
数据:
1.不可变 final Integer String
2.绝对线程安全
3.相对线程安全 Vector HashTable Collections synchronizedCollection
4.线程兼容绝大多数
5.线程对立 Thread的resume 和 suspend 方法 System.setIn()和System.setOut()
线程安全实现方法
1.互斥同步 synchronized ReentrantLock(等待可中断,公平锁,绑定多条件)
2.非阻塞同步 TestAndSet
3.无同步方案 可重入代码(结果可预测) 线程本地存储(生成消费者 消费者 web TreadLocal)
锁优化
1.自旋锁与自适应自旋 -XX:PreBlockSpin 次数
2.锁消除
3.锁粗化
4.轻量级锁
5.偏向锁 -XX:+UseBiasedLocking
分享到:
相关推荐
Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
Linux面试专题及答案+ActiveMQ消息中间件面试专题+Java基础面试题+MySQL性能优化的21个最佳实践+微服务面试专题及答案+深入理解java虚拟机+设计模式面试专题及答案+开源框架面试专题及答案+并发编程及答案+Spring...
Java 并发学习笔记: 进程和线程, 并发理论, 并发关键字, Lock 体系, 原子操作类, 发容器 & 并发工具, 线程池, 并发实践 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的...
Java容器学习笔记: 容器概览, 容器中的设计模式, 容器源码分析 - List, 容器源码分析 - Map, 容器源码分析 - 并发容 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...
Java架构面试笔试专题资料及经验(含答案)和学习笔记: ActiveMQ消息中间件面试专题.pdf Dubbo面试专题及答案(下).pdf Dubbo面试及答案(上).pdf java后端面试题答案.pdf Java基础面试题.pdf java多线程并发编程...
Java 基础学习笔记,主要包括: 10_Java常见对象.md 10_Java常见对象_2.md 1_数据类型.md 3_运算.md 4_Object通用方法.md 5_关键字.md 6_反射.md 8_泛型.md JDK8新特性.md 正则表达式.md Java是一种面向对象的编程...
这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多...
它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)...
Java I/O学习笔记: 磁盘操作 字节操作 字符操作 对象操作 网络操作 NIO & AIO Java I/O Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,意味着可以在不同的操作系统上运行...
实战JAVA虚拟机JVM故障诊断与性能优化 HotSpot实战 Java虚拟机精讲 Kubernetes权威指南:从Docker到Kubernetes实践全接触(第2版) 鸟哥Linux私房菜 MySQL技术内幕_InnoDB存储引擎_第2版 高性能mysql第三版 Netty实战...
学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,关注微信公众号,及时得到文章推送,谢谢支持。 说明:如无特别说明,所有代码都基于JDK8 JavaSE(Java基础) Java Core 关键字 synchronized...
它的设计目标是“一次编写,到处运行(Write Once, Run Anywhere)”,这意味着开发者可以使用Java编写应用程序,并在支持Java的任何平台上无需重新编译即可运行,这得益于其独特的跨平台性,通过Java虚拟机(JVM)...
Java虚拟机 Java并发与多线程 :open_file_folder:数据库 [!WARNING | label:注意区分下数据库和ORM框架!] 数据库:存储数据。常见的数据库如: MySQL Oracle ORM框架: Object Relational Mapping对象关系映射...
Java 的学习笔记和整理的知识点,包含Java语言基础、Java服务端方向的框架、设计模式、计算机网络、算法、Java 虚拟机和数据库等多个方面的内容。想了解前端的内容参考,Android相关的内容参考。 目录结构 语言基础...
1-JavaSE Java的IO Java反射 Java基础 java-并发 java集合 2-JavaEE ...3-Java虚拟机 4-数据结构 5数据库 MySQL Oracle Redis 6-分布式框架 码头工人 弹簧靴 7-Liunx 8-大数据 Hadoop
以后不再维护,转移到笔记总览(source目录)反弹:Java笔记基础java知识点,基本全是代码+注释反射,注解,jdbc,javaweb,redis基本使用java并发基础,完善中。替代设计原理。 杂项,日常学习中遇见的一些问题,...
Java虚拟机相关,内存模型,类加载机制,JVM性能解析等 零散的文章 数据结构与算法 算法的度量,基础数据结构,链表,二叉树,B树,图论,深度和广度优先算法,排序,查找等 设计模式 常用设计模式的Java语言描述 ...
以下是我在学习过程中的笔记记录,主要包含JAVA虚拟机、JAVA并发与集合、数据库原理、数据结构与算法、设计模式等 深入理解JAVA虚拟机 前言 JAVA虚拟机的定义 JAVA语言的水深 如何学习JVM 项目成果 文章目录 思维...