知识点片面化笔记

Synchronieed同步锁(悲观锁)
1锁介绍 
  1.乐观锁: 以其他的方式实现了线程安全 实际无锁的状态
  2.悲观锁: 真正意义的锁
  3.内置锁 内置锁都是互斥锁
2.Synchronieed介绍
  1.java中的关键字 是锁的一种实现
  2.加锁 解锁不需要手动 
  3.加锁的范围中代码发生异常会自动解锁
  4.可以保证可见性,每次执行到Synchronieed代码快是会清空线程区(高速缓存)
  5.会不禁止指令重排,可以保证有序性
  6.原子性 操作一旦开始 不被干扰
  7.老版本 重量级锁 8后轻量级锁


锁范围:加锁的方法
锁类型:对象锁(同一个对象生效)
加锁:执行到Synchronieed加锁的方法自动加锁
释放锁:执行完加锁的方法,自动解锁,出现异常自动解锁;
锁失效:锁失效
public synchronized void text01(){
    for (int i = 0; i < 10000; i++) {
        sum++;
    }
}

锁范围:加锁的方法
锁类型:类锁(同一个类生效)
加锁:执行到Synchronieed加锁的方法自动加锁
释放锁:执行完加锁的方法,自动解锁,出现异常自动解锁;
锁失效:锁失效
public static synchronized void text02(){
    for (int i = 0; i < 10000; i++) {
        sum++;
    }
}


锁范围:加锁代码块
锁类型:类锁(同一个固定值)
加锁:执行到Synchronieed加锁的方法自动加锁
释放锁:执行完加锁的方法,自动解锁,出现异常自动解锁;
锁失效:多个值
static String ch="锁";


//代码块 一个固定值
public void text03(){
    synchronized (ch){
        for (int i = 0; i < 10000; i++) {
            sum++;
        }
    }

}


锁范围:加锁代码块
锁类型:对象(同一个对象生效)
加锁:执行到Synchronieed加锁的方法自动加锁
释放锁:执行完加锁的方法,自动解锁,出现异常自动解锁;
锁失效:锁失效
public void text04(){
    synchronized (this){
        for (int i = 0; i < 10000; i++) {
            sum++;
        }
    }

}

锁范围:加锁代码块
锁类型:类锁(同一个类生效)
加锁:执行到Synchronieed加锁的方法自动加锁
释放锁:执行完加锁的方法,自动解锁,出现异常自动解锁;
锁失效:锁失效
public void text05(){
    synchronized (text02.class){
        for (int i = 0; i < 10000; i++) {
            sum++;
        }
    }

}


可重入锁
不可重入锁

stop(不建议使用 什么情况都可杀死线程,对数据造成损坏)
结束阻塞
interrupt(stop 替代)中断阻塞状态的线程 抛出中断异常 线程继续执行
运行状态不可以中断
注意事项:
该方法只能中断声明了interruptedException异常状态的线程

susepend() resume() 成对出现 无锁的操作 容易出现死锁
暂停线程,让线程处于阻塞状态


susepend()线程挂起
resume()
线程唤醒
线程通信的几种方式
wait()/ notify() 必须要求有锁
wait()等待的同时会释放锁

join 线程通信


JUC中的locks包
1.AQS
ReentranLock 重入锁 作用相当于Synchronieed
排队 先进先出 加锁解锁需要程序员手动控制
非公平锁效率较高与公平锁
lock()加锁
unlock()解锁 通常放在finally里面最理想的


Condition等待唤醒 是针对lock的
创建
ReentranLock ty=new ReentranLock();
Condition y=tr.Condition()
y.await() 等待
y.signal() 随机唤醒一个锁资源


ReadWriteLock读写锁
ReadLock 读锁 共享锁,允许多个线程同时获取读锁
WriteLock 写锁,独占锁 


ReentrantReadWriteLock y=new ReentrantReadWriteLock()


Condition
LockSupport 暂停、恢复
暂停
LockSupport.park
恢复
LockSupport.unpark()


1.类型不同
Synchronieed 关键字,修饰方法,修饰 代码块
lock是接口
2.加锁解锁机制不同
Synchronieed自动加锁解锁
lock手动
3.异常机制
Synchronieed有异常自动解锁
lock不会会出现死锁

4.lock功能强大、性能更优


计数器
countDownLatch()
方法await()
countDown 减一
计数器>0阻塞 =0线程恢复
CyclicBarrier回旋屏障
Semaphone信号量
增加
release()
减少
acquire()
await()值不为0时 阻塞
并发集合类
CopyOnWriterArraylist可以保证最终一致性 不能保证实时一致性 读高于写 读和修改添加是分开的
CopyOnWriterArraySet 底层是动态数组
ConcuentHashmap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值