摘要:
Windows 上安装 MySQL 把菜鸟的复制过来了,原文链接:https://www.runoob.com/mysql/mysql-install.html Windows 上安装 MySQL 相对来说会较为简单,最新版本可以在 MySQL 下载 中下载中查看(更详细安装:Windows 上安装 阅读全文
摘要:
死锁再探 之前学了死锁产生的条件,两个线程分别抱着一个对象的锁,还想同时去获取另一个对象的锁,便会引发死锁 死锁示例 package juc; import java.util.concurrent.TimeUnit; public class TestDeadLock { public stati 阅读全文
摘要:
自旋锁 首次接触到自旋锁是在AtomicInteger类,其中的GetAndIncrement()方法,是类似于num++的原子性操作。 源码分析:其中的do while就是一个自旋锁 public final int getAndIncrement() { return unsafe.getAnd 阅读全文
摘要:
本地java环境安装 一、下载jdk jdk1.8链接: 官网 华为 清华大学 二、安装jdk 以https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/windows/下面的 OpenJDK8U-jdk_x64_windows_hot 阅读全文
摘要:
GIT下载与安装 1.什么是GIT Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 2.下载地址 windows版本官网 各种版本官网 3.安 阅读全文
摘要:
可重入锁 可重入锁就是一个线程已经获得了一把锁,可以重复获取而不会导致死锁 synchronized 和Lock都是可重入锁 synchronized 可重入锁示例 package com.example.juc; public class TestReentrantLock { public st 阅读全文
摘要:
ABA问题 问题现象:两个线程都去获取一个值,第一个线程获取后将其改变,然后又改回来,第二个线程获取到之后以为是第一个值,继续执行下去 ABA问题示例 package com.example.juc; import java.util.concurrent.atomic.AtomicInteger; 阅读全文
摘要:
理解CAS CAS(compare and swap):比较并交换,是CPU并发操作的原语 JUC的atomic包下的类中的操作均为原子性操作,底层均使用的是CAS,是直接对内存的操作 示例代码 package com.example.juc; import java.util.concurrent 阅读全文
摘要:
单例模式详解 单例模式就是只能有一个实例的模式;最大的特点是构造器私有。建议看视频。 单例模式分为两种: 饿汉式:直接将类的实例初始化好,可能会存在资源浪费的情况; 懒汉式:用的时候再初始化实例,比较常用。 饿汉式 特点: 构造器私有 构建一个静态常量表示类的实例 构建一个静态getInstance 阅读全文
摘要:
理解JMM volatile 是java虚拟机提供轻量级的同步机制,是一个java关键字 1.保证可见性 2.不保证原子性 3.禁止指令重排 JMM java 内存模型,是一种约定,不是真实存在的。 关于JMM的一些约定 1.线程解锁前,必须把共享变量刷回主存 2.线程加锁前,必须读取主存的最新值到 阅读全文