摘要:
一、 二、 1. 饿汉式:类初始化时,会立即加载该对象,线程天生安全,调用效率高。 2. 懒汉式: 类初始化时,不会初始化该对象,真正需要使用的时候才会创建该对象,具备懒加载功能 public class TestModel { public static void main(String[] ar 阅读全文
摘要:
乐观锁:是对同步资源加锁,但是更新的时候会判断,在此期间是否有被别的线程修改过,常见是CAS算法 悲观锁:对同步资源加锁,每一个线程进来时都要等待上一个线程释放锁,而synchronized与Lock就是悲观锁 阅读全文
摘要:
一、 /* * 1. ReadWriteLock : 读写锁 * * 写写/读写 需要“互斥” * 读读 不需要互斥 * */ public class TestReadWriteLock { public static void main(String[] args) { ReadWriteLoc 阅读全文
摘要:
一、 /* * 题目:判断打印的 "one" or "two" ? * * 1. 两个普通同步方法,两个线程,标准打印, 打印? //one two * 2. 新增 Thread.sleep() 给 getOne() ,打印? //one two * 3. 新增普通方法 getThree() , 打 阅读全文
摘要:
一、 /* * 一、用于解决多线程安全问题的方式: * * synchronized:隐式锁 * 1. 同步代码块 * * 2. 同步方法 * * jdk 1.5 后: * 3. 同步锁 Lock * 注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁 阅读全文
摘要:
一、CountDownLatch :闭锁,在完成某些运算是,只有其他所有线程的运算全部完成,当前运算才继续执行 public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 阅读全文
摘要:
一、适当选择能够提高效率 阅读全文
摘要:
一、原子变量的作用:解决并发下多个线程操作共享数据存在,线程安全问题 原子变量 = volatile + CAS算法【又叫无锁机制】 二、 例子 package com.atguigu.juc; import java.util.concurrent.atomic.AtomicInteger; * 阅读全文
摘要:
一、当写一个volatile变量时,JMM会把该线程对应的本地中的共享变量值刷新到主内存。 例子: /* * 一、volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见。 * 相较于 synchronized 是一种较为轻量级的同步策略。 * * 注意: * 1. vola 阅读全文
摘要:
1、 首先在我们的计算机上创建文件夹:例如取名:test 2、 进入test文件夹后点击鼠标右键,选择打开Git Bash. 3、 将我们创建的文件夹初始化为Git仓库:git init 4、 将要上传到GitHub的文件移入在克隆仓库时创建的test文件夹 5、 在我们新的本地仓库中添加文件,暂存 阅读全文